~rvb/maas/transaction-1.7-bug-1409852

« back to all changes in this revision

Viewing changes to src/maasserver/tests/test_forms_node.py

merged upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
            ], list(form.fields))
58
58
 
59
59
    def test_changes_node(self):
60
 
        node = factory.make_node()
 
60
        node = factory.make_Node()
61
61
        hostname = factory.make_string()
62
62
        patch_usable_architectures(self, [node.architecture])
63
63
 
217
217
        # If a host with a given hostname exists on a managed nodegroup,
218
218
        # new nodes on unmanaged nodegroups with hostnames that match
219
219
        # that FQDN will be rejected.
220
 
        nodegroup = factory.make_node_group(
 
220
        nodegroup = factory.make_NodeGroup(
221
221
            status=NODEGROUP_STATUS.ACCEPTED,
222
222
            management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
223
 
        node = factory.make_node(
 
223
        node = factory.make_Node(
224
224
            hostname=factory.make_name("hostname"), nodegroup=nodegroup)
225
 
        other_nodegroup = factory.make_node_group()
 
225
        other_nodegroup = factory.make_NodeGroup()
226
226
        form = NodeForm(data={
227
227
            'nodegroup': other_nodegroup,
228
228
            'hostname': node.fqdn,
234
234
    def test_rejects_duplicate_fqdn_on_same_nodegroup(self):
235
235
        # If a node with a given FQDN exists on a managed nodegroup, new
236
236
        # nodes on that nodegroup with duplicate FQDNs will be rejected.
237
 
        nodegroup = factory.make_node_group(
 
237
        nodegroup = factory.make_NodeGroup(
238
238
            status=NODEGROUP_STATUS.ACCEPTED,
239
239
            management=NODEGROUPINTERFACE_MANAGEMENT.DHCP_AND_DNS)
240
 
        node = factory.make_node(
 
240
        node = factory.make_Node(
241
241
            hostname=factory.make_name("hostname"), nodegroup=nodegroup)
242
242
        form = NodeForm(data={
243
243
            'nodegroup': nodegroup,
251
251
class TestAdminNodeForm(MAASServerTestCase):
252
252
 
253
253
    def test_AdminNodeForm_contains_limited_set_of_fields(self):
254
 
        node = factory.make_node()
 
254
        node = factory.make_Node()
255
255
        form = AdminNodeForm(instance=node)
256
256
 
257
257
        self.assertEqual(
277
277
        # from an instance: the field tries to initialise the field using a
278
278
        # zone's ID instead of its name, and ends up reverting to the default.
279
279
        # The code must work around this bug.
280
 
        zone = factory.make_zone()
281
 
        node = factory.make_node(zone=zone)
 
280
        zone = factory.make_Zone()
 
281
        node = factory.make_Node(zone=zone)
282
282
        # We'll create a form that makes a change, but not to the zone.
283
283
        data = {'hostname': factory.make_name('host')}
284
284
        form = AdminNodeForm(instance=node, data=data)
287
287
        self.assertEqual(zone.name, form.initial['zone'])
288
288
 
289
289
    def test_AdminNodeForm_changes_node(self):
290
 
        node = factory.make_node()
291
 
        zone = factory.make_zone()
 
290
        node = factory.make_Node()
 
291
        zone = factory.make_Zone()
292
292
        hostname = factory.make_string()
293
293
        power_type = factory.pick_power_type()
294
294
        form = AdminNodeForm(
313
313
            [choice[0] for choice in form.fields['power_type'].choices])
314
314
 
315
315
    def test_AdminNodeForm_populates_power_type_initial(self):
316
 
        node = factory.make_node()
 
316
        node = factory.make_Node()
317
317
        form = AdminNodeForm(instance=node)
318
318
        self.assertEqual(node.power_type, form.fields['power_type'].initial)
319
319
 
320
320
    def test_AdminNodeForm_changes_node_with_skip_check(self):
321
 
        node = factory.make_node()
 
321
        node = factory.make_Node()
322
322
        hostname = factory.make_string()
323
323
        power_type = factory.pick_power_type()
324
324
        power_parameters_field = factory.make_string()
342
342
        # We had to make Node.nodegroup editable to get Django to
343
343
        # validate it as non-blankable, but that doesn't mean that we
344
344
        # actually want to allow people to edit it through API or UI.
345
 
        old_nodegroup = factory.make_node_group()
346
 
        node = factory.make_node(
 
345
        old_nodegroup = factory.make_NodeGroup()
 
346
        node = factory.make_Node(
347
347
            nodegroup=old_nodegroup,
348
348
            architecture=make_usable_architecture(self))
349
 
        new_nodegroup = factory.make_node_group()
 
349
        new_nodegroup = factory.make_NodeGroup()
350
350
        AdminNodeForm(data={'nodegroup': new_nodegroup}, instance=node).save()
351
351
        # The form saved without error, but the nodegroup change was ignored.
352
352
        self.assertEqual(old_nodegroup, node.nodegroup)