59
59
"Service 'volcano' was not found", self.stderr.getvalue())
62
def test_destroy_subordinate_service(self):
63
log_service = yield self.add_service_from_charm("logging")
64
lu1 = yield log_service.add_unit_state()
66
yield self.add_relation(
67
"juju-info", "container",
68
(self.service_state1, "juju-info", "server"),
69
(log_service, "juju-info", "client"),
73
finished = self.setup_cli_reactor()
74
topology = yield self.get_topology()
75
service_id = topology.find_service_with_name("logging")
76
self.assertNotEqual(service_id, None)
81
main(["destroy-service", "logging"])
83
service_id = topology.find_service_with_name("logging")
85
topology = yield self.get_topology()
86
self.assertTrue(topology.has_service(service_id))
87
exists = yield self.client.exists("/services/%s" % service_id)
88
self.assertTrue(exists)
90
"Unsupported attempt to destroy subordinate service 'logging' "
91
"while principal service 'mysql' is related.\n",
92
self.output.getvalue())
95
def test_destroy_principal_with_subordinates(self):
96
log_service = yield self.add_service_from_charm("logging")
97
lu1 = yield log_service.add_unit_state()
99
yield self.add_relation(
101
(self.service_state1, "juju-info", "server"),
102
(log_service, "juju-info", "client"))
104
finished = self.setup_cli_reactor()
105
topology = yield self.get_topology()
106
service_id = topology.find_service_with_name("mysql")
107
logging_id = topology.find_service_with_name("logging")
109
self.assertNotEqual(service_id, None)
110
self.assertNotEqual(logging_id, None)
115
main(["destroy-service", "mysql"])
117
service_id = topology.find_service_with_name("mysql")
119
topology = yield self.get_topology()
120
self.assertFalse(topology.has_service(service_id))
121
exists = yield self.client.exists("/services/%s" % service_id)
122
self.assertFalse(exists)
124
# Verify the subordinate state was not removed as well
125
# destroy should allow the destruction of subordinate services
126
# with no relations. This means removing the principal and then
127
# breaking the relation will allow for actual removal from
128
# Zookeeper. see test_destroy_subordinate_without_relations.
129
exists = yield self.client.exists("/services/%s" % logging_id)
130
self.assertTrue(exists)
132
self.assertIn("Service 'mysql' destroyed.", self.output.getvalue())
135
def test_destroy_subordinate_without_relations(self):
136
"""Verify we can remove a subordinate w/o relations."""
137
yield self.add_service_from_charm("logging")
139
finished = self.setup_cli_reactor()
140
topology = yield self.get_topology()
141
logging_id = topology.find_service_with_name("logging")
142
self.assertNotEqual(logging_id, None)
147
main(["destroy-service", "logging"])
150
topology = yield self.get_topology()
151
self.assertFalse(topology.has_service(logging_id))
152
exists = yield self.client.exists("/services/%s" % logging_id)
153
self.assertFalse(exists)