def add_relation_unit_states(self, relation_state, unit_states, states): for unit_state, state in zip(unit_states, states): relation_unit_state = yield relation_state.add_unit_state(unit_state) workflow_client = ZookeeperWorkflowState( self.client, relation_unit_state) with (yield workflow_client.lock()): yield workflow_client.set_state(state)
def test_peer_relation(self): """Verify status works with peer relations. """ m1 = yield self.add_provider_machine() m2 = yield self.add_provider_machine() riak = yield self.add_service_from_charm("riak") riak_u1 = yield self.add_unit(riak, m1) riak_u2 = yield self.add_unit(riak, m2, with_agent=lambda _: False) yield self.set_unit_state(riak_u1, "started") yield self.set_unit_state(riak_u2, "started") _, (peer_rel,) = yield self.relation_state_manager.add_relation_state( RelationEndpoint("riak", "peer", "ring", "peer")) riak_u1_relation = yield peer_rel.add_unit_state(riak_u1) riak_u1_workflow = ZookeeperWorkflowState( self.client, riak_u1_relation) with (yield riak_u1_workflow.lock()): yield riak_u1_workflow.set_state("up") yield peer_rel.add_unit_state(riak_u2) state = yield collect( ["riak"], self.provider, self.client, None) self.assertEqual( state["services"]["riak"], {"charm": "local:series/riak-7", "relations": {"ring": ["riak"]}, "units": {"riak/0": {"machine": 0, "public-address": "riak-0.example.com", "agent-state": "started"}, "riak/1": {"machine": 1, "public-address": "riak-1.example.com", "agent-state": "down"}}})
def set_unit_state(self, unit_state, state, port_protos=()): unit_state.set_public_address( "%s.example.com" % unit_state.unit_name.replace("/", "-")) workflow_client = ZookeeperWorkflowState(self.client, unit_state) with (yield workflow_client.lock()): yield workflow_client.set_state(state) for port_proto in port_protos: yield unit_state.open_port(*port_proto)