30
30
def test_have_image_returns_False_if_image_not_available(self):
32
32
BootImage.objects.have_image(
33
factory.make_node_group(), **make_boot_image_params()))
33
factory.make_NodeGroup(), **make_boot_image_params()))
35
35
def test_have_image_returns_True_if_image_available(self):
36
nodegroup = factory.make_node_group()
36
nodegroup = factory.make_NodeGroup()
37
37
params = make_boot_image_params()
38
factory.make_boot_image(nodegroup=nodegroup, **params)
38
factory.make_BootImage(nodegroup=nodegroup, **params)
39
39
self.assertTrue(BootImage.objects.have_image(nodegroup, **params))
41
41
def test_register_image_registers_new_image(self):
42
nodegroup = factory.make_node_group()
42
nodegroup = factory.make_NodeGroup()
43
43
params = make_boot_image_params()
44
44
BootImage.objects.register_image(nodegroup, **params)
45
45
self.assertTrue(BootImage.objects.have_image(nodegroup, **params))
47
47
def test_register_image_leaves_existing_image_intact(self):
48
nodegroup = factory.make_node_group()
48
nodegroup = factory.make_NodeGroup()
49
49
params = make_boot_image_params()
50
factory.make_boot_image(nodegroup=nodegroup, **params)
50
factory.make_BootImage(nodegroup=nodegroup, **params)
51
51
BootImage.objects.register_image(nodegroup, **params)
52
52
self.assertTrue(BootImage.objects.have_image(nodegroup, **params))
54
54
def test_register_image_updates_subarches_for_existing_image(self):
55
nodegroup = factory.make_node_group()
55
nodegroup = factory.make_NodeGroup()
56
56
params = make_boot_image_params()
57
image = factory.make_boot_image(nodegroup=nodegroup, **params)
57
image = factory.make_BootImage(nodegroup=nodegroup, **params)
58
58
params['supported_subarches'] = factory.make_name("subarch")
59
59
BootImage.objects.register_image(nodegroup, **params)
60
60
image = reload_object(image)
62
62
params['supported_subarches'], image.supported_subarches)
64
64
def test_register_image_ignores_empty_subarches_for_existing_image(self):
65
nodegroup = factory.make_node_group()
65
nodegroup = factory.make_NodeGroup()
66
66
params = make_boot_image_params()
67
image = factory.make_boot_image(nodegroup=nodegroup, **params)
67
image = factory.make_BootImage(nodegroup=nodegroup, **params)
68
68
original_supported_subarches = params['supported_subarches']
69
69
params['supported_subarches'] = ''
70
70
BootImage.objects.register_image(nodegroup, **params)
73
73
original_supported_subarches, image.supported_subarches)
75
75
def test_register_image_sets_xinstall_path_and_type(self):
76
nodegroup = factory.make_node_group()
76
nodegroup = factory.make_NodeGroup()
77
77
params = make_boot_image_params()
78
78
params['purpose'] = 'xinstall'
79
79
params['xinstall_path'] = factory.make_name('xi_path')
83
83
self.assertEqual(params['xinstall_type'], image.xinstall_type)
85
85
def test_register_image_update_xinstall_path_and_type(self):
86
nodegroup = factory.make_node_group()
86
nodegroup = factory.make_NodeGroup()
87
87
params = make_boot_image_params()
88
88
params['purpose'] = 'xinstall'
89
89
params['xinstall_path'] = factory.make_name('xi_path')
90
90
params['xinstall_type'] = factory.make_name('xi_type')
91
image = factory.make_boot_image(nodegroup=nodegroup, **params)
91
image = factory.make_BootImage(nodegroup=nodegroup, **params)
92
92
params['xinstall_path'] = factory.make_name('xi_path')
93
93
params['xinstall_type'] = factory.make_name('xi_type')
94
94
BootImage.objects.register_image(nodegroup, **params)
108
108
osystem = Config.objects.get_config('commissioning_osystem')
109
109
series = Config.objects.get_config('commissioning_distro_series')
110
110
result = BootImage.objects.get_default_arch_image_in_nodegroup(
111
factory.make_node_group(), osystem, series,
111
factory.make_NodeGroup(), osystem, series,
112
112
factory.make_name('purpose'))
113
113
self.assertIsNone(result)
115
115
def test_default_arch_image_returns_only_matching_image(self):
116
nodegroup = factory.make_node_group()
116
nodegroup = factory.make_NodeGroup()
117
117
osystem = factory.make_name('os')
118
118
series = factory.make_name('series')
119
119
label = factory.make_name('label')
120
120
arch = factory.make_name('arch')
121
121
purpose = factory.make_name("purpose")
122
factory.make_boot_image(
122
factory.make_BootImage(
123
123
osystem=osystem, architecture=arch,
124
124
release=series, label=label,
125
125
nodegroup=nodegroup, purpose=purpose)
128
128
self.assertEqual(result.architecture, arch)
130
130
def test_default_arch_image_prefers_i386(self):
131
nodegroup = factory.make_node_group()
131
nodegroup = factory.make_NodeGroup()
132
132
osystem = factory.make_name('os')
133
133
series = factory.make_name('series')
134
134
label = factory.make_name('label')
135
135
purpose = factory.make_name("purpose")
136
136
for arch in ['amd64', 'axp', 'i386', 'm88k']:
137
factory.make_boot_image(
137
factory.make_BootImage(
138
138
osystem=osystem, architecture=arch,
139
139
release=series, nodegroup=nodegroup,
140
140
purpose=purpose, label=label)
143
143
self.assertEqual(result.architecture, "i386")
145
145
def test_default_arch_image_returns_arbitrary_pick_if_all_else_fails(self):
146
nodegroup = factory.make_node_group()
146
nodegroup = factory.make_NodeGroup()
147
147
osystem = factory.make_name('os')
148
148
series = factory.make_name('series')
149
149
label = factory.make_name('label')
150
150
purpose = factory.make_name("purpose")
152
factory.make_boot_image(
152
factory.make_BootImage(
153
153
osystem=osystem, architecture=factory.make_name('arch'),
154
154
release=series, label=label, nodegroup=nodegroup,
163
163
def test_default_arch_image_copes_with_subarches(self):
164
nodegroup = factory.make_node_group()
164
nodegroup = factory.make_NodeGroup()
166
166
osystem = factory.make_name('os')
167
167
series = factory.make_name('series')
168
168
label = factory.make_name('label')
169
169
purpose = factory.make_name("purpose")
171
factory.make_boot_image(
171
factory.make_BootImage(
172
172
osystem=osystem, architecture=arch,
173
173
subarchitecture=factory.make_name('sub'),
174
174
release=series, label=label, nodegroup=nodegroup,
183
183
def test_get_usable_architectures_returns_supported_arches(self):
184
nodegroup = factory.make_node_group()
184
nodegroup = factory.make_NodeGroup()
186
186
(factory.make_name('arch'), factory.make_name('subarch')),
187
187
(factory.make_name('arch'), factory.make_name('subarch'))]
188
188
for arch, subarch in arches:
189
factory.make_boot_image(
189
factory.make_BootImage(
190
190
architecture=arch, subarchitecture=subarch,
191
191
nodegroup=nodegroup, purpose='install')
192
factory.make_boot_image(
192
factory.make_BootImage(
193
193
architecture=arch, subarchitecture=subarch,
194
194
nodegroup=nodegroup, purpose='commissioning')
195
195
expected = ["%s/%s" % (arch, subarch) for arch, subarch in arches]
198
198
BootImage.objects.get_usable_architectures(nodegroup))
200
200
def test_get_usable_architectures_uses_given_nodegroup(self):
201
nodegroup = factory.make_node_group()
201
nodegroup = factory.make_NodeGroup()
202
202
arch = factory.make_name('arch')
203
factory.make_boot_image(
203
factory.make_BootImage(
204
204
architecture=arch, nodegroup=nodegroup, purpose='install')
205
factory.make_boot_image(
205
factory.make_BootImage(
206
206
architecture=arch, nodegroup=nodegroup,
207
207
purpose='commissioning')
208
208
self.assertItemsEqual(
210
210
BootImage.objects.get_usable_architectures(
211
factory.make_node_group()))
211
factory.make_NodeGroup()))
213
213
def test_get_usable_architectures_requires_commissioning_image(self):
214
214
arch = factory.make_name('arch')
215
nodegroup = factory.make_node_group()
216
factory.make_boot_image(
215
nodegroup = factory.make_NodeGroup()
216
factory.make_BootImage(
217
217
architecture=arch, nodegroup=nodegroup, purpose='install')
218
218
self.assertItemsEqual(
233
233
arch = factory.make_name('arch')
234
234
subarch = factory.make_name('sub')
235
235
release = factory.make_name('release')
236
nodegroup = factory.make_node_group()
236
nodegroup = factory.make_NodeGroup()
237
237
purpose = factory.make_name("purpose")
238
boot_image = factory.make_boot_image(
238
boot_image = factory.make_BootImage(
239
239
nodegroup=nodegroup, osystem=osystem, architecture=arch,
240
240
subarchitecture=subarch, release=release, purpose=purpose,
241
241
label=factory.make_name('label'))
252
252
arch = factory.make_name('arch')
253
253
primary_subarch = factory.make_name('primary_subarch')
254
254
release = factory.make_name('release')
255
nodegroup = factory.make_node_group()
255
nodegroup = factory.make_NodeGroup()
256
256
purpose = factory.make_name("purpose")
257
257
supported_subarches = [
258
258
factory.make_name("supported1"), factory.make_name("supported2")]
260
boot_image = factory.make_boot_image(
260
boot_image = factory.make_BootImage(
261
261
nodegroup=nodegroup, osystem=osystem, architecture=arch,
262
262
subarchitecture=primary_subarch, release=release, purpose=purpose,
263
263
label=factory.make_name('label'),
276
276
arch = factory.make_name('arch')
277
277
subarch = factory.make_name('sub')
278
278
release = factory.make_name('release')
279
nodegroup = factory.make_node_group()
279
nodegroup = factory.make_NodeGroup()
280
280
purpose = factory.make_name("purpose")
281
relevant_image = factory.make_boot_image(
281
relevant_image = factory.make_BootImage(
282
282
nodegroup=nodegroup, osystem=osystem, architecture=arch,
283
283
subarchitecture=subarch, release=release, purpose=purpose,
284
284
label=factory.make_name('label'))
286
286
# Create a bunch of more recent but irrelevant BootImages..
287
factory.make_boot_image(
288
nodegroup=factory.make_node_group(), osystem=osystem,
287
factory.make_BootImage(
288
nodegroup=factory.make_NodeGroup(), osystem=osystem,
289
289
architecture=arch, subarchitecture=subarch, release=release,
290
290
purpose=purpose, label=factory.make_name('label'))
291
factory.make_boot_image(
291
factory.make_BootImage(
292
292
nodegroup=nodegroup, osystem=osystem,
293
293
architecture=factory.make_name('arch'),
294
294
subarchitecture=subarch, release=release, purpose=purpose,
295
295
label=factory.make_name('label'))
296
factory.make_boot_image(
296
factory.make_BootImage(
297
297
nodegroup=nodegroup, osystem=osystem, architecture=arch,
298
298
subarchitecture=factory.make_name('subarch'),
299
299
release=release, purpose=purpose,
300
300
label=factory.make_name('label'))
301
factory.make_boot_image(
301
factory.make_BootImage(
302
302
nodegroup=nodegroup, osystem=osystem,
303
303
architecture=factory.make_name('arch'),
304
304
subarchitecture=subarch,
305
305
release=factory.make_name('release'), purpose=purpose,
306
306
label=factory.make_name('label'))
307
factory.make_boot_image(
307
factory.make_BootImage(
308
308
nodegroup=nodegroup, osystem=osystem,
309
309
architecture=factory.make_name('arch'),
310
310
subarchitecture=subarch, release=release,
311
311
purpose=factory.make_name('purpose'),
312
312
label=factory.make_name('label'))
313
factory.make_boot_image(
313
factory.make_BootImage(
314
314
nodegroup=nodegroup, osystem=factory.make_name('os'),
315
315
architecture=factory.make_name('arch'),
316
316
subarchitecture=subarch, release=release,
337
337
BootImage.objects.get_usable_osystems(nodegroup))
339
339
def test_get_usable_osystems_uses_given_nodegroup(self):
340
nodegroup = factory.make_node_group()
340
nodegroup = factory.make_NodeGroup()
341
341
osystem = factory.make_name('os')
342
factory.make_boot_image(
342
factory.make_BootImage(
343
343
osystem=osystem, nodegroup=nodegroup)
344
344
self.assertItemsEqual(
346
346
BootImage.objects.get_usable_osystems(
347
factory.make_node_group()))
347
factory.make_NodeGroup()))
349
349
def test_get_usable_releases_returns_supported_releases(self):
350
nodegroup = factory.make_node_group()
350
nodegroup = factory.make_NodeGroup()
351
351
osystem = factory.make_name('os')
353
353
factory.make_name('release'),
354
354
factory.make_name('release'),
356
356
for release in releases:
357
factory.make_boot_image(
357
factory.make_BootImage(
360
360
nodegroup=nodegroup)
363
363
BootImage.objects.get_usable_releases(nodegroup, osystem))
365
365
def test_get_usable_releases_uses_given_nodegroup(self):
366
nodegroup = factory.make_node_group()
366
nodegroup = factory.make_NodeGroup()
367
367
osystem = factory.make_name('os')
368
368
release = factory.make_name('release')
369
factory.make_boot_image(
369
factory.make_BootImage(
370
370
osystem=osystem, release=release, nodegroup=nodegroup)
371
371
self.assertItemsEqual(
373
373
BootImage.objects.get_usable_releases(
374
factory.make_node_group(), osystem))
374
factory.make_NodeGroup(), osystem))
376
376
def test_get_usable_releases_uses_given_osystem(self):
377
nodegroup = factory.make_node_group()
377
nodegroup = factory.make_NodeGroup()
378
378
osystem = factory.make_name('os')
379
379
release = factory.make_name('release')
380
factory.make_boot_image(
380
factory.make_BootImage(
381
381
osystem=osystem, release=release, nodegroup=nodegroup)
382
382
self.assertItemsEqual(
384
384
BootImage.objects.get_usable_releases(
385
factory.make_node_group(), factory.make_name('os')))
385
factory.make_NodeGroup(), factory.make_name('os')))