示例#1
0
def report_neighbours(system_id, neighbours):
    """Report observed neighbours seen on the rack controller."""
    try:
        rack_controller = RackController.objects.get(system_id=system_id)
    except RackController.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    else:
        rack_controller.report_neighbours(neighbours)
示例#2
0
文件: nodes.py 项目: ocni-dtu/maas
def update_node_power_state(system_id, power_state):
    """Update a node power state.

    for :py:class:`~provisioningserver.rpc.region.UpdateNodePowerState.
    """
    try:
        node = Node.objects.get(system_id=system_id)
    except Node.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    node.update_power_state(power_state)
示例#3
0
 def test__returns_None_when_node_not_found(self):
     logger = self.useFixture(FakeLogger("maas", logging.DEBUG))
     client = self.patch(windows_module, "getRegionClient").return_value
     client.side_effect = always_fail_with(NoSuchNode())
     mac = factory.make_mac_address()
     d = windows_module.request_node_info_by_mac_address(mac)
     self.assertThat(extract_result(d), Is(None))
     self.assertDocTestMatches(
         "Node doesn't exist for MAC address: %s" % mac,
         logger.output)
示例#4
0
文件: nodes.py 项目: ocni-dtu/maas
def request_node_info_by_mac_address(mac_address):
    """Request a `Node` with given MAC Address and return it.

    :param mac_addresses: MAC Address of node to request information
        from.
    """
    try:
        node = PhysicalInterface.objects.get(mac_address=mac_address).node
    except PhysicalInterface.DoesNotExist:
        raise NoSuchNode.from_mac_address(mac_address)
    return (node, node.get_boot_purpose())
示例#5
0
文件: nodes.py 项目: ocni-dtu/maas
def mark_node_failed(system_id, error_description):
    """Mark a node as failed.

    for :py:class:`~provisioningserver.rpc.region.MarkNodeFailed`.
    """
    try:
        node = Node.objects.get(system_id=system_id)
    except Node.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    try:
        node.mark_failed(comment=error_description)
    except exceptions.NodeStateViolation as e:
        raise NodeStateViolation(e)
示例#6
0
def update_state(system_id, scope, state):
    """Update the state of a controller for a scope."""
    try:
        controller = Controller.objects.get(system_id=system_id)
    except Controller.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)

    scope_handlers = {
        "versions": _update_controller_versions,
    }
    handler = scope_handlers.get(scope)
    if handler is None:
        raise NoSuchScope()
    handler(controller, state)
示例#7
0
文件: nodes.py 项目: ocni-dtu/maas
def get_time_configuration(system_id):
    """Get settings to use for configuring NTP for the given node.

    :param system_id: system_id of node.
    :return: See `GetTimeConfiguration`.
    """
    try:
        node = Node.objects.get(system_id=system_id)
    except Node.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    else:
        return {
            "servers": ntp.get_servers_for(node),
            "peers": ntp.get_peers_for(node),
        }
示例#8
0
文件: nodes.py 项目: ocni-dtu/maas
def get_controller_type(system_id):
    """Get the type of the node specified by its system identifier.

    :param system_id: system_id of node.
    :return: See `GetControllerType`.
    """
    try:
        node = Node.objects.get(system_id=system_id)
    except Node.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    else:
        return {
            "is_region": node.is_region_controller,
            "is_rack": node.is_rack_controller,
        }
示例#9
0
文件: nodes.py 项目: ocni-dtu/maas
def commission_node(system_id, user):
    """Request a `Node` with given MAC Address and return it.

    :param system_id: system_id of node to commission.
    :param user: user of the node to commission.
    """
    try:
        node = Node.objects.get(system_id=system_id)
    except Node.DoesNotExist:
        raise NoSuchNode.from_system_id(system_id)
    try:
        node.start_commissioning(User.objects.get(username=user))
    except Exception as e:
        # Cluster takes care of logging
        raise CommissionNodeFailed(e)
示例#10
0
    def test__failure_is_suppressed_if_node_not_found(self):
        protocol, connecting = self.patch_rpc_methods(
            side_effect=[fail(NoSuchNode())])
        self.addCleanup((yield connecting))

        ip_address = factory.make_ip_address()
        description = factory.make_name('description')
        event_name = random.choice(list(map_enum(EVENT_TYPES)))

        yield NodeEventHub().logByIP(event_name, ip_address, description)

        self.assertThat(
            protocol.SendEventIPAddress, MockCalledOnceWith(
                ANY, type_name=event_name, ip_address=ip_address,
                description=description))
示例#11
0
 def test__returns_None_when_node_not_found(self):
     client = self.patch(windows_module, "getRegionClient").return_value
     client.side_effect = always_fail_with(NoSuchNode())
     mac = factory.make_mac_address()
     d = windows_module.request_node_info_by_mac_address(mac)
     self.assertThat(extract_result(d), Is(None))