コード例 #1
0
ファイル: subnet.py プロジェクト: th3architect/maas
    def scan(self, parameters):
        """Scan the subnet for connected neighbours.

        :return: user-friendly scan results (as defined by the
            `user_friendly_scan_results()` function).
        """
        # Circular imports.
        from maasserver.api.discoveries import (
            scan_all_rack_networks,
            user_friendly_scan_results,
        )

        subnet = self.get_object(parameters)
        assert self.user.has_perm(NodePermission.admin,
                                  Discovery), "Permission denied."
        cidr = subnet.get_ipnetwork()
        if cidr.version != 4:
            raise ValueError(
                "Cannot scan subnet: only IPv4 subnets can be scanned.")
        cidrs = [cidr]
        if RackController.objects.filter_by_subnet_cidrs(cidrs).count() == 0:
            raise ValueError("Subnet must be configured on a rack controller.")
        rpc_results = scan_all_rack_networks(cidrs=[cidr])
        maaslog.info(
            "User '%s' initiated a neighbour discovery scan against subnet: "
            "%s" % (self.user.username, cidr))
        return user_friendly_scan_results(rpc_results)
コード例 #2
0
 def test__populates_results_correctly(self):
     result = user_friendly_scan_results(scan_all_rack_networks())
     self.assertThat(result, Equals(
         {
             "result": self.result,
             "scan_started_on":
                 get_controller_summary(self.started),
             "scan_failed_on":
                 get_controller_summary(self.failed),
             "scan_attempted_on":
                 get_controller_summary(self.available),
             "failed_to_connect_to":
                 get_controller_summary(self.unavailable),
             "rpc_call_timed_out_on":
                 get_controller_summary(self.timed_out),
             "failures":
                 get_failure_summary(self.failures),
         }
     ))
コード例 #3
0
ファイル: test_discoveries.py プロジェクト: zhangrb/maas
 def test__results_can_be_converted_to_json_and_back(self):
     result = user_friendly_scan_results(scan_all_rack_networks())
     json_result = json.dumps(result)
     self.assertThat(json.loads(json_result), Equals(result))