示例#1
0
 def test_power_type_set_but_no_parameters(self):
     # When power_type is valid, it is set. However, if power_parameters is
     # not specified, the node's power_parameters is left alone, and the
     # node is saved.
     power_type = factory.pick_power_type()
     self.request.POST = {"power_type": power_type}
     store_node_power_parameters(self.node, self.request)
     self.assertEqual(power_type, self.node.power_type)
     self.assertEqual({}, self.node.power_parameters)
     self.save.assert_called_once_with()
示例#2
0
 def test__sets_power_type(self):
     rack = factory.make_RackController()
     power_type = factory.pick_power_type()
     form = ControllerForm(data={
         'power_type': power_type,
         'power_parameters_skip_check': 'true',
     },
                           instance=rack)
     rack = form.save()
     self.assertEqual(power_type, rack.power_type)
示例#3
0
 def test_power_type_set_with_invalid_parameters(self):
     # When power_type is valid, but power_parameters is invalid JSON, the
     # node is not saved, and an exception is raised.
     power_type = factory.pick_power_type()
     self.request.POST = {
         "power_type": power_type,
         "power_parameters": "Not JSON.",
     }
     self.assertRaises(MAASAPIBadRequest, store_node_power_parameters,
                       self.node, self.request)
     self.save.assert_has_calls([])
示例#4
0
 def test_sets_power_type(self):
     rack = factory.make_RackController()
     power_type = factory.pick_power_type()
     form = ControllerForm(
         data={
             "power_type": power_type,
             "power_parameters_skip_check": "true",
         },
         instance=rack,
     )
     rack = form.save()
     self.assertEqual(power_type, rack.power_type)
示例#5
0
 def test_power_type_set_with_parameters(self):
     # When power_type is valid, and power_parameters is valid JSON, both
     # fields are set on the node, and the node is saved.
     power_type = factory.pick_power_type()
     power_parameters = {"foo": [1, 2, 3]}
     self.request.POST = {
         "power_type": power_type,
         "power_parameters": json.dumps(power_parameters),
     }
     store_node_power_parameters(self.node, self.request)
     self.assertEqual(power_type, self.node.power_type)
     self.assertEqual(power_parameters, self.node.power_parameters)
     self.save.assert_called_once_with()
示例#6
0
 def test_AdminMachineForm_doesnt_change_power_type(self):
     power_type = factory.pick_power_type()
     node = factory.make_Node(power_type=power_type)
     hostname = factory.make_string()
     arch = make_usable_architecture(self)
     form = AdminMachineForm(data={
         'hostname': hostname,
         'architecture': arch,
         'power_parameters_skip_check': 'true',
     },
                             instance=node)
     node = form.save()
     self.assertEqual(power_type, node.power_type)
示例#7
0
 def test_no_connected_rack_controllers(self):
     # When get_driver_types returns empty dictionary.
     mock_get_driver_types = self.patch(nodes_module, "get_driver_types")
     mock_get_driver_types.return_value = {}
     power_type = factory.pick_power_type()
     self.request.POST = {"power_type": power_type}
     error = self.assertRaises(ClusterUnavailable,
                               store_node_power_parameters, self.node,
                               self.request)
     self.assertEqual(
         "No rack controllers connected to validate the power_type.",
         str(error))
     self.assertThat(mock_get_driver_types,
                     MockCalledOnceWith(ignore_errors=True))
示例#8
0
 def test_AdminMachineForm_changes_power_type(self):
     node = factory.make_Node()
     hostname = factory.make_string()
     power_type = factory.pick_power_type()
     arch = make_usable_architecture(self)
     form = AdminMachineForm(
         data={
             "hostname": hostname,
             "architecture": arch,
             "power_type": power_type,
             "power_parameters_skip_check": "true",
         },
         instance=node,
     )
     node = form.save()
     self.assertEqual(power_type, node.power_type)
示例#9
0
    def test_AdminMachineForm_changes_power_parameters_with_skip_check(self):
        node = factory.make_Node()
        hostname = factory.make_string()
        power_type = factory.pick_power_type()
        power_parameters_field = factory.make_string()
        arch = make_usable_architecture(self)
        form = AdminMachineForm(data={
            'hostname': hostname,
            'architecture': arch,
            'power_type': power_type,
            'power_parameters_field': power_parameters_field,
            'power_parameters_skip_check': 'true',
        },
                                instance=node)
        form.save()

        self.assertEqual((hostname, power_type, {
            'field': power_parameters_field
        }), (node.hostname, node.power_type, node.power_parameters))
示例#10
0
    def test_AdminMachineForm_changes_power_parameters_with_skip_check(self):
        node = factory.make_Node(interface=True)
        hostname = factory.make_string()
        power_type = factory.pick_power_type(but_not=["lxd"])
        power_parameters_field = factory.make_string()
        arch = make_usable_architecture(self)
        form = AdminMachineForm(
            data={
                "hostname": hostname,
                "architecture": arch,
                "power_type": power_type,
                "power_parameters_field": power_parameters_field,
                "power_parameters_skip_check": "true",
            },
            instance=node,
        )
        form.save()

        self.assertEqual(
            (hostname, power_type, {"field": power_parameters_field}),
            (node.hostname, node.power_type, node.power_parameters),
        )