Merge lp:~james-page/charms/trusty/neutron-agents-midonet/trunk into lp:~celebdor/charms/trusty/neutron-agents-midonet/split
- Trusty Tahr (14.04)
- trunk
- Merge into split
Proposed by
James Page
Status: | Superseded |
---|---|
Proposed branch: | lp:~james-page/charms/trusty/neutron-agents-midonet/trunk |
Merge into: | lp:~celebdor/charms/trusty/neutron-agents-midonet/split |
Diff against target: |
553 lines (+159/-179) 7 files modified
hooks/services.py (+9/-3) tests/006-minimal-trusty-kilo-mem (+29/-0) tests/010-basic-trusty-juno (+3/-6) tests/011-basic-trusty-kilo (+3/-6) tests/012-basic-trusty-liberty (+22/-0) tests/basic_deployment.py (+71/-100) unit_tests/test_context.py (+22/-64) |
To merge this branch: | bzr merge lp:~james-page/charms/trusty/neutron-agents-midonet/trunk |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Antoni Segura Puimedon | Pending | ||
Review via email: mp+286180@code.launchpad.net |
This proposal has been superseded by a proposal from 2016-02-16.
Commit message
Description of the change
To post a comment you must log in.
Unmerged revisions
- 51. By James Page
-
Misc updates
- 50. By James Page
-
Tweak charm sources
- 49. By James Page
-
Fully mock out unit tests from underlying os
- 48. By Antoni Segura Puimedon <email address hidden>
-
amulet: remove old tests and add check for nova-api-metadata
- 47. By Antoni Segura Puimedon <email address hidden>
-
Fix unit tests
- 46. By Antoni Segura Puimedon <email address hidden>
-
linting fix
- 45. By Antoni Segura Puimedon <email address hidden>
-
use the right midonet plugin for Liberty and above
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'hooks/services.py' |
2 | --- hooks/services.py 2016-02-04 11:42:36 +0000 |
3 | +++ hooks/services.py 2016-02-16 14:28:40 +0000 |
4 | @@ -18,9 +18,9 @@ |
5 | from charmhelpers.contrib.openstack import utils |
6 | from charmhelpers.core import hookenv |
7 | from charmhelpers.core import host |
8 | -from charmhelpers.core import unitdata |
9 | from charmhelpers.core.services import base |
10 | from charmhelpers.core.services import helpers |
11 | +from charmhelpers.core import unitdata |
12 | from midonet_helpers import puppet |
13 | from midonet_helpers import relations as common_relations |
14 | from midonet_helpers import repositories |
15 | @@ -86,6 +86,10 @@ |
16 | amqp = context.AMQPContext() |
17 | network_service = MidonetNetworkServiceContext(rel_name='neutron_agents') |
18 | midonet = common_relations.MidonetApiRelation() |
19 | + if ost_release in ('juno', 'kilo'): |
20 | + midonet_plugin = 'python-neutron-plugin-midonet' |
21 | + else: |
22 | + midonet_plugin = 'python-networking-midonet' |
23 | |
24 | manager = base.ServiceManager([ |
25 | { |
26 | @@ -102,7 +106,7 @@ |
27 | source='dhcp_agent.ini', |
28 | target='/etc/neutron/dhcp_agent.ini'), |
29 | puppet.InstallPackagesCallback( |
30 | - ('python-neutron-plugin-midonet',)), |
31 | + (midonet_plugin,)), |
32 | OSTRenderer('/etc/neutron/neutron.conf', |
33 | [amqp]), |
34 | ], |
35 | @@ -127,8 +131,10 @@ |
36 | ], |
37 | }, |
38 | ]) |
39 | + |
40 | manager.manage() |
41 | if (host.service_running('neutron-dhcp-agent') and |
42 | host.service_running('neutron-metadata-agent') and |
43 | host.service_running('nova-api-metadata')): |
44 | - hookenv.status_set('active', 'All nova and neutron agents up and running') |
45 | + hookenv.status_set('active', |
46 | + 'All nova and neutron agents up and running') |
47 | |
48 | === modified file 'tests/00-setup' (properties changed: +x to -x) |
49 | === added file 'tests/006-minimal-trusty-kilo-mem' |
50 | --- tests/006-minimal-trusty-kilo-mem 1970-01-01 00:00:00 +0000 |
51 | +++ tests/006-minimal-trusty-kilo-mem 2016-02-16 14:28:40 +0000 |
52 | @@ -0,0 +1,29 @@ |
53 | +#!/usr/bin/env python |
54 | +# |
55 | +# Copyright (c) 2015 Midokura SARL, All Rights Reserved. |
56 | +# |
57 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
58 | +# you may not use this file except in compliance with the License. |
59 | +# You may obtain a copy of the License at |
60 | +# |
61 | +# http://www.apache.org/licenses/LICENSE-2.0 |
62 | +# |
63 | +# Unless required by applicable law or agreed to in writing, software |
64 | +# distributed under the License is distributed on an "AS IS" BASIS, |
65 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
66 | +# See the License for the specific language governing permissions and |
67 | +# limitations under the License. |
68 | +import os |
69 | + |
70 | +import basic_deployment |
71 | + |
72 | +if __name__ == '__main__': |
73 | + if None in (os.getenv('MEM_USERNAME'), os.getenv('MEM_PWD')): |
74 | + print('Missing MEM_USERNAME and MEM_PWD environment variables for ' |
75 | + 'running Midokura Enterprise MidoNet tests. Skipping test') |
76 | + else: |
77 | + deployment = basic_deployment.AgentMinimumDeployment( |
78 | + ubuntu_series='trusty', |
79 | + openstack_origin='cloud:trusty-kilo', |
80 | + midonet_origin='mem-1.9') |
81 | + deployment.run_tests() |
82 | |
83 | === modified file 'tests/010-basic-trusty-juno' |
84 | --- tests/010-basic-trusty-juno 2016-01-27 17:01:34 +0000 |
85 | +++ tests/010-basic-trusty-juno 2016-02-16 14:28:40 +0000 |
86 | @@ -1,4 +1,4 @@ |
87 | -#!/usr/bin/python |
88 | +#!/usr/bin/env python |
89 | # |
90 | # Copyright (c) 2015 Midokura SARL, All Rights Reserved. |
91 | # |
92 | @@ -13,13 +13,10 @@ |
93 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
94 | # See the License for the specific language governing permissions and |
95 | # limitations under the License. |
96 | - |
97 | - |
98 | -from basic_deployment import MidonetBasicDeployment |
99 | +import basic_deployment |
100 | |
101 | if __name__ == '__main__': |
102 | - deployment = MidonetBasicDeployment( |
103 | + deployment = basic_deployment.AgentMinimumDeployment( |
104 | ubuntu_series='trusty', |
105 | openstack_origin='cloud:trusty-juno', |
106 | midonet_origin='midonet-2015.06') |
107 | - deployment.run_tests() |
108 | |
109 | === modified file 'tests/011-basic-trusty-kilo' |
110 | --- tests/011-basic-trusty-kilo 2016-01-27 17:01:34 +0000 |
111 | +++ tests/011-basic-trusty-kilo 2016-02-16 14:28:40 +0000 |
112 | @@ -1,4 +1,4 @@ |
113 | -#!/usr/bin/python |
114 | +#!/usr/bin/env python |
115 | # |
116 | # Copyright (c) 2015 Midokura SARL, All Rights Reserved. |
117 | # |
118 | @@ -13,13 +13,10 @@ |
119 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
120 | # See the License for the specific language governing permissions and |
121 | # limitations under the License. |
122 | - |
123 | - |
124 | -from basic_deployment import MidonetBasicDeployment |
125 | +import basic_deployment |
126 | |
127 | if __name__ == '__main__': |
128 | - deployment = MidonetBasicDeployment( |
129 | + deployment = basic_deployment.AgentMinimumDeployment( |
130 | ubuntu_series='trusty', |
131 | openstack_origin='cloud:trusty-kilo', |
132 | midonet_origin='midonet-2015.06') |
133 | - deployment.run_tests() |
134 | |
135 | === added file 'tests/012-basic-trusty-liberty' |
136 | --- tests/012-basic-trusty-liberty 1970-01-01 00:00:00 +0000 |
137 | +++ tests/012-basic-trusty-liberty 2016-02-16 14:28:40 +0000 |
138 | @@ -0,0 +1,22 @@ |
139 | +#!/usr/bin/env python |
140 | +# |
141 | +# Copyright (c) 2015 Midokura SARL, All Rights Reserved. |
142 | +# |
143 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
144 | +# you may not use this file except in compliance with the License. |
145 | +# You may obtain a copy of the License at |
146 | +# |
147 | +# http://www.apache.org/licenses/LICENSE-2.0 |
148 | +# |
149 | +# Unless required by applicable law or agreed to in writing, software |
150 | +# distributed under the License is distributed on an "AS IS" BASIS, |
151 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
152 | +# See the License for the specific language governing permissions and |
153 | +# limitations under the License. |
154 | +import basic_deployment |
155 | + |
156 | +if __name__ == '__main__': |
157 | + deployment = basic_deployment.AgentMinimumDeployment( |
158 | + ubuntu_series='trusty', |
159 | + openstack_origin='cloud:trusty-liberty', |
160 | + midonet_origin='midonet-2015.06') |
161 | |
162 | === modified file 'tests/basic_deployment.py' |
163 | --- tests/basic_deployment.py 2016-02-04 11:42:36 +0000 |
164 | +++ tests/basic_deployment.py 2016-02-16 14:28:40 +0000 |
165 | @@ -31,7 +31,7 @@ |
166 | SETUP_TIMEOUT = 9600 |
167 | |
168 | |
169 | -class MidonetBasicDeployment(): |
170 | +class AgentMinimumDeployment(): |
171 | def __init__(self, ubuntu_series, openstack_origin=None, |
172 | midonet_origin=None): |
173 | self.os_release = openstack_origin |
174 | @@ -43,6 +43,16 @@ |
175 | self.d = amulet.Deployment(series=self.series) |
176 | self.d.charm_name = 'neutron-agents-midonet' |
177 | |
178 | + # Sentries |
179 | + self.zookeeper_sentry = None |
180 | + self.keystone_sentry = None |
181 | + self.cassandra_sentry = None |
182 | + self.nova_compute_sentry = None |
183 | + self.mn_api_sentry = None |
184 | + self.agents_mn_sentry = None |
185 | + self.keystone_api_relation = None |
186 | + self.zookeeper_api_relation = None |
187 | + |
188 | self._add_services() |
189 | self._add_relations() |
190 | self._configure_services() |
191 | @@ -50,37 +60,28 @@ |
192 | self._initialize_tests() |
193 | |
194 | def _add_services(self): |
195 | - self.d.add('mysql', charm='cs:trusty/mysql', units=1, |
196 | + self.d.add('mysql', charm='mysql', units=1, |
197 | series=self.series) |
198 | - self.d.add('rabbitmq-server', charm='cs:trusty/rabbitmq-server', |
199 | + self.d.add('keystone', charm='keystone', units=1, series=self.series) |
200 | + self.d.add('cassandra', charm='cassandra', |
201 | units=1, series=self.series) |
202 | - self.d.add('cassandra', charm='cassandra', units=1, |
203 | - branch='cs:trusty/cassandra', series=self.series) |
204 | - self.d.add('keystone', charm='keystone', units=1, series=self.series, |
205 | - branch='cs:trusty/keystone') |
206 | - self.d.add('compute', charm='nova-compute', units=1, |
207 | - branch='cs:trusty/nova-compute', series=self.series, |
208 | - constraints={'mem': '8G'}) |
209 | - self.d.add('neutron', charm='neutron-api', units=1, |
210 | - branch='lp:~celebdor/charms/trusty/neutron-api/liberty', |
211 | - series=self.series) |
212 | - self.d.add('nova', charm='nova-cloud-controller', |
213 | - units=1, series=self.series) |
214 | - self.d.add('glance', charm='glance', |
215 | - branch='cs:trusty/glance', |
216 | - units=1, series=self.series) |
217 | - self.d.add('cinder', charm='cinder', |
218 | - branch='cs:trusty/glance', |
219 | - units=1, series=self.series) |
220 | - self.d.add('zookeeper', charm='cs:trusty/zookeeper', units=1, |
221 | - series=self.series) |
222 | - self.d.add('midonet-api', charm='midonet-api', units=1, |
223 | + self.d.add('zookeeper', charm='zookeeper', units=1, |
224 | + series=self.series) |
225 | + self.d.add('rabbitmq', charm='rabbitmq-server', units=1, |
226 | + series=self.series) |
227 | + self.d.add('nova', charm='nova-cloud-controller', units=1, |
228 | + series=self.series) |
229 | + self.d.add('neutron', |
230 | + charm='cs:~openstack-charmers-next/trusty/neutron-api', |
231 | + units=1, |
232 | + series=self.series) |
233 | + self.d.add('midonet-api', charm='midonet-api', |
234 | branch='lp:~celebdor/charms/trusty/midonet-api/trunk', |
235 | series=self.series) |
236 | - self.d.add('midonet-agent', charm='midonet-agent', units=1, |
237 | + self.d.add('midonet-agent', charm='midonet-agent', |
238 | branch='lp:~celebdor/charms/trusty/midonet-agent/trunk', |
239 | series=self.series) |
240 | - self.d.add('neutron-agents-midonet', constraints={'mem': '4G'}) |
241 | + self.d.add('neutron-agents-midonet', constraints={'mem': "4G"}) |
242 | |
243 | def _add_relations(self): |
244 | # Keystone |
245 | @@ -89,65 +90,53 @@ |
246 | # Nova |
247 | self.d.relate('mysql:shared-db', 'nova:shared-db') |
248 | self.d.relate('keystone:identity-service', 'nova:identity-service') |
249 | - self.d.relate('rabbitmq-server:amqp', 'nova:amqp') |
250 | + self.d.relate('rabbitmq:amqp', 'nova:amqp') |
251 | self.d.relate('neutron-agents-midonet:neutron_agents', |
252 | 'nova:quantum-network-service') |
253 | self.d.relate('neutron:neutron-api', 'nova:neutron-api') |
254 | - self.d.relate('compute:cloud-compute', 'nova:cloud-compute') |
255 | - self.d.relate('glance:image-service', 'nova:image-service') |
256 | - self.d.relate('cinder:cinder-volume-service', |
257 | - 'nova:cinder-volume-service') |
258 | - |
259 | - # Cinder |
260 | - self.d.relate('keystone:identity-service', 'cinder:identity-service') |
261 | - self.d.relate('mysql:shared-db', 'cinder:shared-db') |
262 | - self.d.relate('rabbitmq-server:amqp', 'cinder:amqp') |
263 | - self.d.relate('glance:image-service', 'cinder:image-service') |
264 | - |
265 | - # Glance |
266 | - self.d.relate('keystone:identity-service', 'glance:identity-service') |
267 | - self.d.relate('mysql:shared-db', 'glance:shared-db') |
268 | - self.d.relate('rabbitmq-server:amqp', 'glance:amqp') |
269 | |
270 | # Neutron |
271 | self.d.relate('mysql:shared-db', 'neutron:shared-db') |
272 | self.d.relate('keystone:identity-service', 'neutron:identity-service') |
273 | - self.d.relate('rabbitmq-server:amqp', 'neutron:amqp') |
274 | + self.d.relate('rabbitmq:amqp', 'neutron:amqp') |
275 | self.d.relate('neutron-agents-midonet:neutron-plugin-api', |
276 | 'neutron:neutron-plugin-api') |
277 | + self.d.relate('midonet-api:midonet-api', 'neutron:midonet') |
278 | |
279 | # MidoNet |
280 | self.d.relate('keystone:identity-service', 'midonet-api:keystone') |
281 | self.d.relate('zookeeper:zookeeper', 'midonet-api:zookeeper') |
282 | self.d.relate('midonet-agent:host', 'midonet-api:host') |
283 | - self.d.relate('neutron:midonet', 'midonet-api:midonet-api') |
284 | - self.d.relate('rabbitmq-server:amqp', 'neutron-gents-midonet:amqp') |
285 | + self.d.relate('rabbitmq:amqp', 'neutron-agents-midonet:amqp') |
286 | self.d.relate('midonet-agent:host', 'neutron-agents-midonet:agent') |
287 | + self.d.relate('midonet-api:midonet-api', |
288 | + 'neutron-agents-midonet:midonet') |
289 | self.d.relate('cassandra:database', 'midonet-agent:cassandra') |
290 | self.d.relate('zookeeper:zookeeper', 'midonet-agent:zookeeper') |
291 | - self.d.relate('midonet-api:midonet-api', |
292 | - 'neutron-agents-midonet:midonet') |
293 | - |
294 | - # Compute |
295 | - self.d.relate('rabbitmq-server:amqp', 'compute:amqp') |
296 | - self.d.relate('midonet-agent:neutron-plugin', 'compute:neutron-plugin') |
297 | - self.d.relate('glance:image-service', 'compute:image-service') |
298 | |
299 | def _configure_services(self): |
300 | - repo_config = {'midonet-origin': self.midonet_origin, |
301 | - 'openstack-origin': self.os_release} |
302 | - if self.mem: |
303 | - repo_config.update(self.mem_credentials) |
304 | - |
305 | self.d.configure('keystone', { |
306 | - 'admin-user': 'admin', |
307 | - 'admin-password': 'openstack', |
308 | - 'admin-token': 'osttesting', |
309 | - 'enable-pki': 'false', |
310 | - 'openstack-origin': self.os_release}) |
311 | - |
312 | - self.d.configure('mysql', { |
313 | - 'max-connections': 500}) |
314 | + 'admin-user': 'admin', |
315 | + 'admin-password': 'openstack', |
316 | + 'admin-token': 'osttesting', |
317 | + 'enable-pki': 'false', |
318 | + 'openstack-origin': self.os_release}) |
319 | + |
320 | + self.d.configure('nova', { |
321 | + 'network-manager': 'Neutron', |
322 | + 'openstack-origin': self.os_release}) |
323 | + |
324 | + neutron_conf = { |
325 | + 'l2-population': 'false', |
326 | + 'neutron-security-groups': 'true', |
327 | + 'neutron-plugin': 'midonet', |
328 | + 'neutron-external-network': 'Public_Network', |
329 | + 'midonet-origin': self.midonet_origin, |
330 | + 'openstack-origin': self.os_release} |
331 | + if self.mem: |
332 | + neutron_conf.update(self.mem_credentials) |
333 | + |
334 | + self.d.configure('neutron', neutron_conf) |
335 | |
336 | self.d.configure('cassandra', { |
337 | 'authenticator': 'AllowAllAuthenticator', |
338 | @@ -157,33 +146,16 @@ |
339 | 'deb http://debian.datastax.com/community 2.0 main', |
340 | 'extra_packages': 'dsc20'}) |
341 | |
342 | - self.d.configure('compute', { |
343 | - 'openstack-origin': self.os_release, |
344 | - 'virt-type': 'qemu', |
345 | - 'flat-interface': 'eth0', |
346 | - 'manage-neutron-plugin-legacy-mode': 'false'}) |
347 | - |
348 | - self.d.configure('nova', { |
349 | - 'openstack-origin': self.os_release, |
350 | - 'network-manager': 'Neutron', |
351 | - 'shared-secret': 'secret'}) |
352 | - |
353 | - self.d.configure('neutron', { |
354 | - 'neutron-plugin': 'midonet', |
355 | - 'neutron-security-groups': 'True', |
356 | - 'neutron-external-network': 'Public_Network', |
357 | - 'l2-population': 'False', |
358 | - 'openstack-origin': self.os_release, |
359 | - 'midonet-origin': self.midonet_origin}) |
360 | - |
361 | - |
362 | - self.d.configure('midonet-api', repo_config) |
363 | - |
364 | - neutron_agts_midonet_config = {'shared-secret': 'secret'} |
365 | - neutron_agts_midonet_config.update(repo_config) |
366 | - self.d.configure('neutron-agents-midonet', neutron_agts_midonet_config) |
367 | - |
368 | - self.d.configure('midonet-agent', repo_config) |
369 | + self.d.configure('mysql', {'max-connections': 500}) |
370 | + |
371 | + api_config = {'midonet-origin': self.midonet_origin, |
372 | + 'openstack-origin': self.os_release} |
373 | + if self.mem: |
374 | + api_config.update(self.mem_credentials) |
375 | + self.d.configure('midonet-api', api_config) |
376 | + self.d.configure('midonet-agent', api_config) |
377 | + self.d.configure('neutron-agents-midonet', api_config) |
378 | + |
379 | |
380 | def _deploy(self): |
381 | try: |
382 | @@ -196,8 +168,6 @@ |
383 | def _initialize_tests(self): |
384 | self.zookeeper_sentry = self.d.sentry.unit['zookeeper/0'] |
385 | self.keystone_sentry = self.d.sentry.unit['keystone/0'] |
386 | - self.cassandra_sentry = self.d.sentry.unit['cassandra/0'] |
387 | - self.nova_compute_sentry = self.d.sentry.unit['compute/0'] |
388 | self.mn_api_sentry = self.d.sentry.unit['midonet-api/0'] |
389 | self.mn_agent_sentry = self.d.sentry.unit['midonet-agent/0'] |
390 | self.agents_mn_sentry = self.d.sentry.unit['neutron-agents-midonet/0'] |
391 | @@ -206,12 +176,6 @@ |
392 | 'identity-service', 'midonet-api:keystone') |
393 | self.zookeeper_api_relation = self.zookeeper_sentry.relation( |
394 | 'zookeeper', 'midonet-api:zookeeper') |
395 | - self.zk_host_relation = self.zookeeper_sentry.relation( |
396 | - 'zookeeper', 'midonet-agent:zookeeper') |
397 | - self.cs_host_relation = self.cassandra_sentry.relation( |
398 | - 'database', 'midonet-agent:cassandra') |
399 | - self.api_host_relation = self.mn_api_sentry.relation( |
400 | - 'host', 'midonet-agent:host') |
401 | |
402 | def run_tests(self): |
403 | for test in dir(self): |
404 | @@ -249,3 +213,10 @@ |
405 | amulet.raise_status(amulet.FAIL, |
406 | msg="neutron-metadata-agent not running: %s" % |
407 | meta_agent_out) |
408 | + u.log.debug('Checking nova-api-metadata...') |
409 | + meta_agent_out, _ = self.agents_mn_sentry.run( |
410 | + 'service nova-api-metadata status') |
411 | + if 'running' not in meta_agent_out: |
412 | + amulet.raise_status(amulet.FAIL, |
413 | + msg="nova-api-metadata not running: %s" % |
414 | + meta_agent_out) |
415 | |
416 | === modified file 'unit_tests/test_context.py' |
417 | --- unit_tests/test_context.py 2016-01-28 00:53:03 +0000 |
418 | +++ unit_tests/test_context.py 2016-02-16 14:28:40 +0000 |
419 | @@ -18,7 +18,7 @@ |
420 | import shutil |
421 | import tempfile |
422 | |
423 | -import mock |
424 | +import services |
425 | |
426 | from .midonet_helpers import test |
427 | |
428 | @@ -55,38 +55,20 @@ |
429 | '10.10.10.11'] |
430 | test.CharmTestCase.__init__(self, *args, **kwargs) |
431 | |
432 | - @mock.patch('charmhelpers.fetch.apt_install') |
433 | - def setUp(self, apt_install): |
434 | - |
435 | - import services |
436 | - |
437 | + def setUp(self): |
438 | self.relations = test.FakeRelation(self._full_relation_data()) |
439 | - self.services = services |
440 | test.CharmTestCase.setUp(self, services.hookenv, HOOKENV_PATCHES) |
441 | |
442 | def lsb_release(): |
443 | - ubuntu_trusty = { |
444 | + return { |
445 | 'DISTRIB_ID': 'Ubuntu', |
446 | 'DISTRIB_RELEASE': '14.04', |
447 | 'DISTRIB_CODENAME': 'trusty', |
448 | 'DISTRIB_DESCRIPTION': "Ubuntu 14.04.3 LTS", |
449 | } |
450 | |
451 | - try: |
452 | - data = services.host.lsb_release() |
453 | - except Exception: |
454 | - return ubuntu_trusty |
455 | - if data.get('DISTRIB_ID') != 'Ubuntu': |
456 | - return ubuntu_trusty |
457 | - return data |
458 | - |
459 | def get_os_codename_package(pkg, fatal=True): |
460 | - version = 'liberty' |
461 | - try: |
462 | - ret_vers = services.utils.get_os_codename_package(pkg, fatal) |
463 | - except Exception: |
464 | - return version |
465 | - return ret_vers |
466 | + return 'liberty' |
467 | |
468 | self.patch_all(services.utils, |
469 | ('get_os_codename_package', |
470 | @@ -94,38 +76,21 @@ |
471 | self.lsb_release.side_effect = lsb_release |
472 | self.get_os_codename_package.side_effect = get_os_codename_package |
473 | |
474 | + self.patch_all(services.base, ('service_restart', 'service_stop')) |
475 | + self.patch_all(services.helpers, ('render_template',)) |
476 | self.patch_all(services.host, ('service_running',)) |
477 | - self.service_running.return_value = True |
478 | - |
479 | - _templating = mock.patch.object(services.helpers, 'render_template') |
480 | - setattr(self, 'render_template', _templating.start()) |
481 | - self.addCleanup(_templating.stop) |
482 | - |
483 | - _check_call = mock.patch.object(services.hookenv.subprocess, |
484 | - 'check_call') |
485 | - setattr(self, 'check_call', _check_call.start()) |
486 | - self.addCleanup(_check_call.stop) |
487 | - |
488 | - _service_restart = mock.patch.object(services.base, 'service_restart') |
489 | - setattr(self, 'service_restart', _service_restart.start()) |
490 | - self.addCleanup(_service_restart.stop) |
491 | - |
492 | - _service_stop = mock.patch.object(services.base, 'service_stop') |
493 | - setattr(self, 'service_stop', _service_stop.start()) |
494 | - self.addCleanup(_service_stop.stop) |
495 | - |
496 | - _relation_helpers = mock.patch.object( |
497 | - services.relations.helpers, 'hookenv', spec=[ |
498 | - 'relation_ids', |
499 | - 'related_units', |
500 | - 'relation_get']) |
501 | - setattr(self, 'relation_helpers', _relation_helpers.start()) |
502 | - self.addCleanup(_relation_helpers.stop) |
503 | + self.patch_all(services.puppet, ('_apply',)) |
504 | + self.patch_all(services.templating.OSConfigRenderer, ('write_all',)) |
505 | |
506 | self.test_config.config['openstack-origin'] = 'cloud:trusty-liberty' |
507 | self.config.side_effect = self.test_config.get |
508 | - self.relation_get.side_effect = self.test_relation.get |
509 | + self.related_units.side_effect = self.relations.related_units |
510 | + self.relation_get.side_effect = self.relations.get |
511 | + self.relation_ids.side_effect = self.relations.relation_ids |
512 | |
513 | + services.context.related_units = self.related_units |
514 | + services.context.relation_get = self.relation_get |
515 | + services.context.relation_ids = self.relation_ids |
516 | services.context.config = self.config |
517 | |
518 | self.charm_dir.return_value = tempfile.mkdtemp() |
519 | @@ -135,21 +100,7 @@ |
520 | test.CharmTestCase.tearDown(self) |
521 | |
522 | def test_config_change(self): |
523 | - |
524 | - self.data = self._full_relation_data() |
525 | - |
526 | - self.relation_helpers.relation_ids.side_effect = ( |
527 | - self.relations.relation_ids) |
528 | - |
529 | - import services |
530 | - services.context.relation_ids = self.relation_helpers.relation_ids |
531 | - |
532 | - self.relation_helpers.related_units.side_effect = ( |
533 | - self.relations.related_units) |
534 | - self.relation_helpers.relation_get.side_effect = ( |
535 | - self.relations.get) |
536 | - |
537 | - self.services.manage() |
538 | + services.manage() |
539 | |
540 | self.assertTrue(self.render_template.called) |
541 | self.assertTrue(self.service_restart.called) |
542 | @@ -181,4 +132,11 @@ |
543 | 'port': 8080, |
544 | }, |
545 | }, |
546 | + 'amqp:2': { |
547 | + 'rabbitmq/0': { |
548 | + 'clustered': False, |
549 | + 'private-address': '10.0.30.14', |
550 | + 'password': 'foopass', |
551 | + }, |
552 | + }, |
553 | } |