def test_pick_attr(self): sd = self.sample_attr_data self.assertEqual(pick_attr(sd, role="client"), {"role": "client", "name": "db"}) self.assertEqual(pick_attr(sd, role="server"), {"role": "server", "name": "website"}) self.assertEqual(pick_attr(sd, role="client", name="db"), {"role": "client", "name": "db"}) self.assertEqual(pick_attr(sd, role="client", name="foo"), None)
def _build_relation(self): mysql_ep = RelationEndpoint("mysql", "juju-info", "juju-info", "server", "global") logging_ep = RelationEndpoint("logging", "juju-info", "juju-info", "client", "container") mysql, my_units = yield self.get_service_and_units_by_charm_name( "mysql", 1) self.assertFalse((yield mysql.is_subordinate())) log, log_units = yield self.get_service_and_units_by_charm_name( "logging") self.assertTrue((yield log.is_subordinate())) # add the relationship so we can create units with containers relation_state, service_states = (yield self.relation_manager.add_relation_state( mysql_ep, logging_ep)) log, log_units = yield self.get_service_and_units_by_charm_name( "logging", containers=my_units) self.assertTrue((yield log.is_subordinate())) for lu in log_units: self.assertTrue((yield lu.is_subordinate())) self.mu1 = my_units[0] self.lu1 = log_units[0] self.mystate = pick_attr(service_states, relation_role="server") self.logstate = pick_attr(service_states, relation_role="client") yield self.mystate.add_unit_state(self.mu1) self.log_unit_relation = yield self.logstate.add_unit_state(self.lu1) self.my_unit_relation = yield self.mystate.add_unit_state(self.mu1) self.unit = self.lu1 self.container_unit = self.mu1 self.service = log self.relation_state = relation_state returnValue(self.logstate)