Пример #1
0
 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))
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
 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())