Merge lp:~sinzui/juju-ci-tools/controller-model into lp:juju-ci-tools

Proposed by Curtis Hovey
Status: Merged
Merged at revision: 1428
Proposed branch: lp:~sinzui/juju-ci-tools/controller-model
Merge into: lp:juju-ci-tools
Diff against target: 266 lines (+85/-18)
3 files modified
jujupy.py (+17/-4)
tests/test_deploy_stack.py (+2/-2)
tests/test_jujupy.py (+66/-12)
To merge this branch: bzr merge lp:~sinzui/juju-ci-tools/controller-model
Reviewer Review Type Date Requested Status
Aaron Bentley (community) Approve
Review via email: mp+295657@code.launchpad.net

Description of the change

Rename 'admin' model to 'controller', preserve old name in EnvJujuClient2B7.

The Juju team are ready to rename the 'admin' model to 'controller' model. These changes supports their branch. The get_admin_model_name() returns 'controller'. The original method is moved to the new EnvJujuClient2B7. The factory function will use the EnvJujuClient2B7 for 2.0-beta7.

Several ClientTest test methods were updated. Four were adapted to run in TestEnvJujuClient2B7. The FakeControllerState was updated to use controller. A few logging tests were also updated.

Thee are some lint spacing issues also fixed.

To post a comment you must log in.
Revision history for this message
Aaron Bentley (abentley) wrote :

Looks good. Should we also be updating our API to reflect the name change, e.g. get_controller_model_name? That's "clean-as-you-go", I think.

Also, I think landing this will break testing of beta8 until the corresponding juju change is landed.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'jujupy.py'
2--- jujupy.py 2016-05-24 23:36:01 +0000
3+++ jujupy.py 2016-05-25 04:02:00 +0000
4@@ -530,6 +530,8 @@
5 client_class = EnvJujuClient2B2
6 elif re.match('^2\.0-(beta[3-6])', version):
7 client_class = EnvJujuClient2B3
8+ elif re.match('^2\.0-(beta7)', version):
9+ client_class = EnvJujuClient2B7
10 else:
11 client_class = EnvJujuClient
12 return client_class(env, version, full_path, debug=debug)
13@@ -924,7 +926,7 @@
14 raise JujuResourceTimeout(
15 'Timeout waiting for a resource to be downloaded. '
16 'ResourceId: {} Service or Unit: {} Timeout: {}'.format(
17- resource_id, service_or_unit, timeout))
18+ resource_id, service_or_unit, timeout))
19
20 def upgrade_charm(self, service, charm_path=None):
21 args = (service,)
22@@ -1104,7 +1106,7 @@
23 Return the name of the environment when an 'admin' model does
24 not exist.
25 """
26- return 'admin'
27+ return 'controller'
28
29 def _acquire_model_client(self, name):
30 """Get a client for a model with the supplied name.
31@@ -1401,7 +1403,7 @@
32 output = self.get_juju_output('add-user', *args, include_e=False)
33 return self._get_register_command(output)
34
35- def revoke(self, username, models=None, permissions='read'):
36+ def revoke(self, username, models=None, permissions='read'):
37 if models is None:
38 models = self.env.environment
39
40@@ -1410,7 +1412,18 @@
41 self.controller_juju('revoke', args)
42
43
44-class EnvJujuClient2B3(EnvJujuClient):
45+class EnvJujuClient2B7(EnvJujuClient):
46+
47+ def get_admin_model_name(self):
48+ """Return the name of the 'admin' model.
49+
50+ Return the name of the environment when an 'admin' model does
51+ not exist.
52+ """
53+ return 'admin'
54+
55+
56+class EnvJujuClient2B3(EnvJujuClient2B7):
57
58 def _add_model(self, model_name, config_file):
59 self.controller_juju('create-model', (
60
61=== modified file 'tests/test_deploy_stack.py'
62--- tests/test_deploy_stack.py 2016-05-23 03:02:18 +0000
63+++ tests/test_deploy_stack.py 2016-05-25 04:02:00 +0000
64@@ -1238,7 +1238,7 @@
65
66 self.assertItemsEqual(
67 [call(client, os.path.join(log_dir, 'name'), None, {}),
68- call(clients['admin'], os.path.join(log_dir, 'admin'),
69+ call(clients['controller'], os.path.join(log_dir, 'controller'),
70 'foo/models/cache.yaml', {})],
71 del_mock.mock_calls)
72
73@@ -1260,7 +1260,7 @@
74
75 self.assertItemsEqual(
76 [call(client, os.path.join(log_dir, 'name'), None, {}),
77- call(clients['admin'], os.path.join(log_dir, 'admin'),
78+ call(clients['controller'], os.path.join(log_dir, 'controller'),
79 'foo/models/cache.yaml', {})],
80 del_mock.mock_calls)
81
82
83=== modified file 'tests/test_jujupy.py'
84--- tests/test_jujupy.py 2016-05-24 23:36:01 +0000
85+++ tests/test_jujupy.py 2016-05-25 04:02:00 +0000
86@@ -48,6 +48,7 @@
87 EnvJujuClient2A2,
88 EnvJujuClient2B2,
89 EnvJujuClient2B3,
90+ EnvJujuClient2B7,
91 ErroredUnit,
92 GroupReporter,
93 get_cache_path,
94@@ -129,7 +130,7 @@
95 default_model = self.add_model(model_name)
96 default_model.name = model_name
97 if separate_admin:
98- admin_model = default_model.controller.add_model('admin')
99+ admin_model = default_model.controller.add_model('controller')
100 else:
101 admin_model = default_model
102 self.admin_model = admin_model
103@@ -297,7 +298,7 @@
104 self.debug = debug
105 self.juju_timings = {}
106
107- def clone(self, full_path=None, version=None, debug=None,
108+ def clone(self, full_path=None, version=None, debug=None,
109 feature_flags=None):
110 if version is None:
111 version = self.version
112@@ -1007,6 +1008,7 @@
113 yield '2.0-beta5'
114 yield '2.0-beta6'
115 yield '2.0-beta7'
116+ yield '2.0-beta8'
117 yield '2.0-delta1'
118
119 context = patch.object(
120@@ -1068,10 +1070,13 @@
121 self.assertIs(type(client), EnvJujuClient2B3)
122 self.assertEqual(client.version, '2.0-beta6')
123 client = EnvJujuClient.by_version(None)
124- self.assertIs(type(client), EnvJujuClient)
125+ self.assertIs(type(client), EnvJujuClient2B7)
126 self.assertEqual(client.version, '2.0-beta7')
127 client = EnvJujuClient.by_version(None)
128 self.assertIs(type(client), EnvJujuClient)
129+ self.assertEqual(client.version, '2.0-beta8')
130+ client = EnvJujuClient.by_version(None)
131+ self.assertIs(type(client), EnvJujuClient)
132 self.assertEqual(client.version, '2.0-delta1')
133 with self.assertRaises(StopIteration):
134 EnvJujuClient.by_version(None)
135@@ -1154,10 +1159,11 @@
136 env = JujuData('foo')
137 client = EnvJujuClient(env, None, 'my/juju/bin')
138 with patch.object(client, 'get_admin_model_name',
139- return_value='admin') as gamn_mock:
140+ return_value='controller') as gamn_mock:
141 full = client._full_args('bar', False, ('baz', 'qux'), admin=True)
142 self.assertEqual((
143- 'juju', '--show-log', 'bar', '-m', 'admin', 'baz', 'qux'), full)
144+ 'juju', '--show-log', 'bar', '-m', 'controller', 'baz', 'qux'),
145+ full)
146 gamn_mock.assert_called_once_with()
147
148 def test__bootstrap_config(self):
149@@ -2062,7 +2068,7 @@
150 def test_get_admin_model_name(self):
151 models = {
152 'models': [
153- {'name': 'admin', 'model-uuid': 'aaaa'},
154+ {'name': 'controller', 'model-uuid': 'aaaa'},
155 {'name': 'bar', 'model-uuid': 'bbbb'}],
156 'current-model': 'bar'
157 }
158@@ -2071,7 +2077,7 @@
159 return_value=models) as gm_mock:
160 admin_name = client.get_admin_model_name()
161 self.assertEqual(0, gm_mock.call_count)
162- self.assertEqual('admin', admin_name)
163+ self.assertEqual('controller', admin_name)
164
165 def test_get_admin_model_name_without_admin(self):
166 models = {
167@@ -2083,21 +2089,22 @@
168 client = EnvJujuClient(JujuData('foo'), None, None)
169 with patch.object(client, 'get_models', return_value=models):
170 admin_name = client.get_admin_model_name()
171- self.assertEqual('admin', admin_name)
172+ self.assertEqual('controller', admin_name)
173
174 def test_get_admin_model_name_no_models(self):
175 client = EnvJujuClient(JujuData('foo'), None, None)
176 with patch.object(client, 'get_models', return_value={}):
177 admin_name = client.get_admin_model_name()
178- self.assertEqual('admin', admin_name)
179+ self.assertEqual('controller', admin_name)
180
181 def test_get_admin_client(self):
182 client = EnvJujuClient(
183 JujuData('foo', {'bar': 'baz'}, 'myhome'), None, None)
184 admin_client = client.get_admin_client()
185 admin_env = admin_client.env
186- self.assertEqual('admin', admin_env.environment)
187- self.assertEqual({'bar': 'baz', 'name': 'admin'}, admin_env.config)
188+ self.assertEqual('controller', admin_env.environment)
189+ self.assertEqual(
190+ {'bar': 'baz', 'name': 'controller'}, admin_env.config)
191
192 def test_list_controllers(self):
193 client = EnvJujuClient(JujuData('foo'), None, None)
194@@ -3006,6 +3013,49 @@
195 self.assertTrue(output.startswith('juju register'))
196
197
198+class TestEnvJujuClient2B7(ClientTest):
199+
200+ def test_get_admin_model_name(self):
201+ models = {
202+ 'models': [
203+ {'name': 'admin', 'model-uuid': 'aaaa'},
204+ {'name': 'bar', 'model-uuid': 'bbbb'}],
205+ 'current-model': 'bar'
206+ }
207+ client = EnvJujuClient2B7(JujuData('foo'), None, None)
208+ with patch.object(client, 'get_models',
209+ return_value=models) as gm_mock:
210+ admin_name = client.get_admin_model_name()
211+ self.assertEqual(0, gm_mock.call_count)
212+ self.assertEqual('admin', admin_name)
213+
214+ def test_get_admin_model_name_without_admin(self):
215+ models = {
216+ 'models': [
217+ {'name': 'bar', 'model-uuid': 'aaaa'},
218+ {'name': 'baz', 'model-uuid': 'bbbb'}],
219+ 'current-model': 'bar'
220+ }
221+ client = EnvJujuClient2B7(JujuData('foo'), None, None)
222+ with patch.object(client, 'get_models', return_value=models):
223+ admin_name = client.get_admin_model_name()
224+ self.assertEqual('admin', admin_name)
225+
226+ def test_get_admin_model_name_no_models(self):
227+ client = EnvJujuClient2B7(JujuData('foo'), None, None)
228+ with patch.object(client, 'get_models', return_value={}):
229+ admin_name = client.get_admin_model_name()
230+ self.assertEqual('admin', admin_name)
231+
232+ def test_get_admin_client(self):
233+ client = EnvJujuClient2B7(
234+ JujuData('foo', {'bar': 'baz'}, 'myhome'), None, None)
235+ admin_client = client.get_admin_client()
236+ admin_env = admin_client.env
237+ self.assertEqual('admin', admin_env.environment)
238+ self.assertEqual({'bar': 'baz', 'name': 'admin'}, admin_env.config)
239+
240+
241 class TestEnvJujuClient2B3(ClientTest):
242
243 def test_add_model_hypenated_controller(self):
244@@ -3272,6 +3322,7 @@
245 yield '2.0-beta5'
246 yield '2.0-beta6'
247 yield '2.0-beta7'
248+ yield '2.0-beta8'
249 yield '2.0-delta1'
250
251 context = patch.object(
252@@ -3333,10 +3384,13 @@
253 self.assertIs(type(client), EnvJujuClient2B3)
254 self.assertEqual(client.version, '2.0-beta6')
255 client = EnvJujuClient1X.by_version(None)
256- self.assertIs(type(client), EnvJujuClient)
257+ self.assertIs(type(client), EnvJujuClient2B7)
258 self.assertEqual(client.version, '2.0-beta7')
259 client = EnvJujuClient1X.by_version(None)
260 self.assertIs(type(client), EnvJujuClient)
261+ self.assertEqual(client.version, '2.0-beta8')
262+ client = EnvJujuClient1X.by_version(None)
263+ self.assertIs(type(client), EnvJujuClient)
264 self.assertEqual(client.version, '2.0-delta1')
265 with self.assertRaises(StopIteration):
266 EnvJujuClient1X.by_version(None)

Subscribers

People subscribed via source and target branches