Esempio n. 1
0
    def test_makes_calls_to_each_client_given(self):
        rack_controllers = [factory.make_RackController() for _ in range(3)]
        clients = self.patch_clients(rack_controllers)

        tag_name = factory.make_name("tag")
        tag_definition = factory.make_name("definition")
        tag_nsmap_prefix = factory.make_name("prefix")
        tag_nsmap_uri = factory.make_name("uri")
        tag_nsmap = [{"prefix": tag_nsmap_prefix, "uri": tag_nsmap_uri}]

        work = []
        rack_creds = []
        rack_nodes = []
        for rack, client in zip(rack_controllers, clients):
            creds = factory.make_name("creds")
            rack_creds.append(creds)
            nodes = [{
                "system_id": factory.make_Node().system_id
            } for _ in range(3)]
            rack_nodes.append(nodes)
            work.append({
                "system_id": rack.system_id,
                "hostname": rack.hostname,
                "client": client,
                "tag_name": tag_name,
                "tag_definition": tag_definition,
                "tag_nsmap": tag_nsmap,
                "credentials": creds,
                "nodes": nodes,
            })

        [d] = _do_populate_tags(work)

        self.assertIsNone(extract_result(d))

        for rack, client, creds, nodes in zip(rack_controllers, clients,
                                              rack_creds, rack_nodes):
            self.expectThat(
                client,
                MockCallsMatch(
                    call(
                        EvaluateTag,
                        tag_name=tag_name,
                        tag_definition=tag_definition,
                        system_id=rack.system_id,
                        tag_nsmap=tag_nsmap,
                        credentials=creds,
                        nodes=nodes,
                    )),
            )
Esempio n. 2
0
    def test_logs_failures(self):
        rack_controllers = [factory.make_RackController()]
        clients = self.patch_clients(rack_controllers)
        clients[0].side_effect = always_fail_with(
            ZeroDivisionError("splendid day for a spot of cricket"))

        tag_name = factory.make_name("tag")
        tag_definition = factory.make_name("definition")
        tag_nsmap = {}

        work = []
        for rack, client in zip(rack_controllers, clients):
            work.append({
                "system_id":
                rack.system_id,
                "hostname":
                rack.hostname,
                "client":
                client,
                "tag_name":
                tag_name,
                "tag_definition":
                tag_definition,
                "tag_nsmap":
                tag_nsmap,
                "credentials":
                factory.make_name("creds"),
                "nodes": [{
                    "system_id": factory.make_Node().system_id
                } for _ in range(3)],
            })

        with FakeLogger("maas") as log:
            [d] = _do_populate_tags(work)
            self.assertIsNone(extract_result(d))

        self.assertDocTestMatches(
            "Tag tag-... (definition-...) could not be evaluated ... (...): "
            "splendid day for a spot of cricket",
            log.output,
        )
Esempio n. 3
0
    def test_logs_successes(self):
        rack_controllers = [factory.make_RackController()]
        clients = self.patch_clients(rack_controllers)

        tag_name = factory.make_name("tag")
        tag_definition = factory.make_name("definition")
        tag_nsmap = {}

        work = []
        for rack, client in zip(rack_controllers, clients):
            work.append({
                "system_id":
                rack.system_id,
                "hostname":
                rack.hostname,
                "client":
                client,
                "tag_name":
                tag_name,
                "tag_definition":
                tag_definition,
                "tag_nsmap":
                tag_nsmap,
                "credentials":
                factory.make_name("creds"),
                "nodes": [{
                    "system_id": factory.make_Node().system_id
                } for _ in range(3)],
            })

        with FakeLogger("maas") as log:
            [d] = _do_populate_tags(work)
            self.assertIsNone(extract_result(d))

        self.assertDocTestMatches(
            "Tag tag-... (definition-...) evaluated on rack "
            "controller ... (...)",
            log.output,
        )