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, )), )
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, )
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, )