def test_query_nodes_calls_query_all_nodes(self): service = self.make_monitor_service() service.max_nodes_at_once = sentinel.max_nodes_at_once example_power_parameters = { "system_id": factory.make_UUID(), "hostname": factory.make_hostname(), "power_state": factory.make_name("power_state"), "power_type": factory.make_name("power_type"), "context": {}, } rpc_fixture = self.useFixture(MockClusterToRegionRPCFixture()) proto_region, io = rpc_fixture.makeEventLoop( region.ListNodePowerParameters) proto_region.ListNodePowerParameters.side_effect = [ succeed({"nodes": [example_power_parameters]}), succeed({"nodes": []}), ] query_all_nodes = self.patch(npms, "query_all_nodes") d = service.query_nodes(getRegionClient()) io.flush() self.assertEqual(None, extract_result(d)) self.assertThat( query_all_nodes, MockCalledOnceWith( [example_power_parameters], max_concurrency=sentinel.max_nodes_at_once, clock=service.clock, ), )
def patch_rpc_methods(self): fixture = self.useFixture(MockClusterToRegionRPCFixture()) protocol, io = fixture.makeEventLoop( region.MarkNodeFailed, region.UpdateNodePowerState, region.SendEvent, ) return protocol, io
def patch_rpc_methods(self, return_value={}, side_effect=None): fixture = self.useFixture(MockClusterToRegionRPCFixture()) protocol, io = fixture.makeEventLoop(region.MarkNodeFailed, region.SendEvent, region.UpdateNodePowerState) protocol.MarkNodeFailed.return_value = return_value protocol.MarkNodeFailed.side_effect = side_effect return protocol.SendEvent, protocol.MarkNodeFailed, io
def test_query_nodes_calls_the_region(self): service = self.make_monitor_service() rpc_fixture = self.useFixture(MockClusterToRegionRPCFixture()) proto_region, io = rpc_fixture.makeEventLoop( region.ListNodePowerParameters) proto_region.ListNodePowerParameters.return_value = succeed( {"nodes": []}) client = getRegionClient() d = service.query_nodes(client) io.flush() self.assertEqual(None, extract_result(d)) self.assertThat( proto_region.ListNodePowerParameters, MockCalledOnceWith(ANY, uuid=client.localIdent))
def test_query_nodes_copes_with_NoSuchCluster(self): service = self.make_monitor_service() rpc_fixture = self.useFixture(MockClusterToRegionRPCFixture()) proto_region, io = rpc_fixture.makeEventLoop( region.ListNodePowerParameters) client = getRegionClient() proto_region.ListNodePowerParameters.return_value = fail( exceptions.NoSuchCluster.from_uuid(client.localIdent)) d = service.query_nodes(client) d.addErrback(service.query_nodes_failed, client.localIdent) with FakeLogger("maas") as maaslog: io.flush() self.assertEqual(None, extract_result(d)) self.assertDocTestMatches("Rack controller '...' is not recognised.", maaslog.output)