def test_get_power_driver_types_passes_args_through(self): mocked = self.patch(driver_parameters, "get_all_power_types") mocked.return_value = [] get_driver_types(sentinel.nodegroup, sentinel.ignore_errors) self.assertThat( mocked, MockCalledOnceWith(controllers=sentinel.nodegroup, ignore_errors=sentinel.ignore_errors))
def store_node_power_parameters(node, request): """Store power parameters in request. The parameters should be JSON, passed with key `power_parameters`. """ power_type = request.POST.get("power_type", None) if power_type is None: return # Don't overwrite redfish power type with ipmi. if node.power_type == "redfish": power_type = node.power_type power_types = list(get_driver_types(ignore_errors=True)) if not power_types: raise ClusterUnavailable( "No rack controllers connected to validate the power_type.") if power_type not in power_types + [UNKNOWN_POWER_TYPE]: raise MAASAPIBadRequest("Bad power_type '%s'" % power_type) power_parameters = request.POST.get("power_parameters", None) if power_parameters: try: power_parameters = json.loads(power_parameters) except ValueError: raise MAASAPIBadRequest("Failed to parse JSON power_parameters") else: power_parameters = node.power_parameters if power_type == "redfish": power_parameters = { **node.instance_power_parameters, **power_parameters, } node.set_power_config(power_type, power_parameters) node.save()
def store_node_power_parameters(node, request): """Store power parameters in request. The parameters should be JSON, passed with key `power_parameters`. """ power_type = request.POST.get("power_type", None) if power_type is None: return power_types = get_driver_types(ignore_errors=True) if len(power_types) == 0: raise ClusterUnavailable( "No rack controllers connected to validate the power_type.") if power_type in power_types or power_type == UNKNOWN_POWER_TYPE: node.power_type = power_type else: raise MAASAPIBadRequest("Bad power_type '%s'" % power_type) power_parameters = request.POST.get("power_parameters", None) if power_parameters and not power_parameters.isspace(): try: node.power_parameters = json.loads(power_parameters) except ValueError: raise MAASAPIBadRequest("Failed to parse JSON power_parameters") node.save()
def test_get_power_driver_types_transforms_data_to_dict(self): mocked = self.patch(driver_parameters, "get_all_power_types") mocked.return_value = [ { "driver_type": "power", "name": "namevalue", "description": "descvalue", }, { "driver_type": "power", "name": "namevalue2", "description": "descvalue2", }, ] expected = {"namevalue": "descvalue", "namevalue2": "descvalue2"} self.assertEqual(expected, get_driver_types())