Merge lp:~frankban/juju-quickstart/new-bundle-lib-no-bundle into lp:juju-quickstart

Proposed by Francesco Banconi
Status: Merged
Merged at revision: 147
Proposed branch: lp:~frankban/juju-quickstart/new-bundle-lib-no-bundle
Merge into: lp:juju-quickstart
Diff against target: 199 lines (+31/-18)
7 files modified
quickstart/__init__.py (+1/-1)
quickstart/charmstore.py (+1/-1)
quickstart/models/bundles.py (+3/-1)
quickstart/tests/models/test_bundles.py (+2/-1)
quickstart/tests/test_charmstore.py (+19/-9)
quickstart/tests/test_manage.py (+1/-1)
tox.ini (+4/-4)
To merge this branch: bzr merge lp:~frankban/juju-quickstart/new-bundle-lib-no-bundle
Reviewer Review Type Date Requested Status
Fabrice Matrat Approve
Review via email: mp+279412@code.launchpad.net

Description of the change

Update to juju-bundlelib 0.4.1.

To post a comment you must log in.
Revision history for this message
Fabrice Matrat (fabricematrat) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'quickstart/__init__.py'
2--- quickstart/__init__.py 2015-11-23 14:57:26 +0000
3+++ quickstart/__init__.py 2015-12-03 09:56:35 +0000
4@@ -45,7 +45,7 @@
5 Once Juju has been installed, the command can also be run as a juju plugin,
6 without the hyphen ("juju quickstart").
7 """
8-VERSION = (2, 2, 3)
9+VERSION = (2, 2, 4)
10
11
12 def get_version():
13
14=== modified file 'quickstart/charmstore.py'
15--- quickstart/charmstore.py 2015-04-21 10:22:46 +0000
16+++ quickstart/charmstore.py 2015-12-03 09:56:35 +0000
17@@ -142,7 +142,7 @@
18 Raise an IOError if any other problems occur while communicating with the
19 charm store.
20 """
21- if not reference.is_bundle():
22+ if reference.series and not reference.is_bundle():
23 raise ValueError(
24 b'expected a bundle, provided charm {}'.format(reference))
25 content = get_reference(reference, path)
26
27=== modified file 'quickstart/models/bundles.py'
28--- quickstart/models/bundles.py 2015-11-30 11:18:19 +0000
29+++ quickstart/models/bundles.py 2015-12-03 09:56:35 +0000
30@@ -176,6 +176,8 @@
31 raise
32
33 # The source refers to a bundle URL in jujucharms.com.
34+ if not reference.series:
35+ reference.series = 'bundle'
36 try:
37 data = charmstore.get_bundle_data(reference)
38 except charmstore.NotFoundError as err:
39@@ -252,7 +254,7 @@
40 reference.charmworld_id = url[len('bundle:'):]
41 logging.warn(
42 'this bundle URL is deprecated: please use the new format: '
43- '{}'.format(reference.jujucharms_id()))
44+ '{}'.format(reference.copy(series='').jujucharms_id()))
45 return Bundle(data, reference=reference)
46
47
48
49=== modified file 'quickstart/tests/models/test_bundles.py'
50--- quickstart/tests/models/test_bundles.py 2015-11-30 11:18:19 +0000
51+++ quickstart/tests/models/test_bundles.py 2015-12-03 09:56:35 +0000
52@@ -344,7 +344,8 @@
53 def test_jujucharms_bundle_invalid_url(self):
54 # A ValueError is raised if the provided jujucharms.com identifier is
55 # not valid.
56- with self.assert_value_error('invalid bundle URL: u/no/such/bundle/!'):
57+ expected_error = 'invalid charm or bundle URL: u/no/such/bundle/!'
58+ with self.assert_value_error(expected_error):
59 bundles.from_source('u/no/such/bundle/!')
60
61 def test_jujucharms_bundle_invalid_content(self):
62
63=== modified file 'quickstart/tests/test_charmstore.py'
64--- quickstart/tests/test_charmstore.py 2015-04-21 10:22:46 +0000
65+++ quickstart/tests/test_charmstore.py 2015-12-03 09:56:35 +0000
66@@ -88,7 +88,17 @@
67 content = charmstore.get_reference(ref, '/meta/hash')
68 self.assertEqual('hash', content)
69 mock_urlread.assert_called_once_with(
70- settings.CHARMSTORE_API + 'bundle/mediawiki-single/meta/hash')
71+ settings.CHARMSTORE_API + 'mediawiki-single/meta/hash')
72+
73+ def test_success_bundle(self):
74+ # A GET request to the charm store is correctly performed using the
75+ # given bundle reference.
76+ ref = references.Reference.from_jujucharms_url('django/bundle')
77+ with self.patch_urlread(contents='hash') as mock_urlread:
78+ content = charmstore.get_reference(ref, '/meta/hash')
79+ self.assertEqual('hash', content)
80+ mock_urlread.assert_called_once_with(
81+ settings.CHARMSTORE_API + 'bundle/django/meta/hash')
82
83 def test_success_without_leading_slash(self):
84 # The resulting URL is correctly formatted when the static path does
85@@ -120,8 +130,7 @@
86 with self.assertRaises(charmstore.NotFoundError) as ctx:
87 charmstore.get_reference(ref, '/no/such')
88 expected_error = (
89- 'charm store resource not found at '
90- '{}bundle/django/no/such: '
91+ 'charm store resource not found at {}django/no/such: '
92 'bad wolf'.format(settings.CHARMSTORE_API))
93 self.assertEqual(expected_error, bytes(ctx.exception))
94
95@@ -190,7 +199,7 @@
96
97 def test_data_retrieved(self):
98 # The bundle data is correctly retrieved and parsed.
99- ref = references.Reference.from_jujucharms_url('django/42')
100+ ref = references.Reference.from_jujucharms_url('django/bundle/42')
101 with self.patch_urlread(contents=self.bundle_content) as mock_urlread:
102 data = charmstore.get_bundle_data(ref)
103 self.assertEqual(self.bundle_data, data)
104@@ -205,7 +214,7 @@
105 charmstore.get_bundle_data(ref)
106 expected_error = (
107 'cannot communicate with the charm store at '
108- '{}bundle/mediawiki-single/archive/bundle.yaml: '
109+ '{}mediawiki-single/archive/bundle.yaml: '
110 'bad wolf'.format(settings.CHARMSTORE_API))
111 self.assertEqual(expected_error, bytes(ctx.exception))
112
113@@ -217,7 +226,7 @@
114 charmstore.get_bundle_data(ref)
115 expected_error = (
116 'charm store resource not found at '
117- '{}bundle/no-such/archive/bundle.yaml: '
118+ '{}no-such/archive/bundle.yaml: '
119 'bad wolf'.format(settings.CHARMSTORE_API))
120 self.assertEqual(expected_error, bytes(ctx.exception))
121
122@@ -246,7 +255,8 @@
123
124 def test_data_retrieved(self):
125 # The legacy bundle data is correctly retrieved and parsed.
126- ref = references.Reference.from_jujucharms_url('u/who/django/42')
127+ ref = references.Reference.from_jujucharms_url(
128+ 'u/who/django/bundle/42')
129 contents = self.legacy_bundle_content
130 with self.patch_urlread(contents=contents) as mock_urlread:
131 data = charmstore.get_legacy_bundle_data(ref)
132@@ -263,13 +273,13 @@
133 charmstore.get_legacy_bundle_data(ref)
134 expected_error = (
135 'cannot communicate with the charm store at '
136- '{}bundle/mediawiki-single/archive/bundles.yaml.orig: '
137+ '{}mediawiki-single/archive/bundles.yaml.orig: '
138 'bad wolf'.format(settings.CHARMSTORE_API))
139 self.assertEqual(expected_error, bytes(ctx.exception))
140
141 def test_not_found_error(self):
142 # Not found errors are properly propagated.
143- ref = references.Reference.from_jujucharms_url('no-such')
144+ ref = references.Reference.from_jujucharms_url('no-such/bundle')
145 with self.patch_urlread(error=netutils.NotFoundError('bad wolf')):
146 with self.assertRaises(charmstore.NotFoundError) as ctx:
147 charmstore.get_legacy_bundle_data(ref)
148
149=== modified file 'quickstart/tests/test_manage.py'
150--- quickstart/tests/test_manage.py 2015-10-28 16:45:58 +0000
151+++ quickstart/tests/test_manage.py 2015-12-03 09:56:35 +0000
152@@ -661,7 +661,7 @@
153 with mock.patch('sys.stderr', new_callable=io.StringIO) as mock_stderr:
154 self.call_setup(['invalid/bundle!'], exit_called=False)
155 expected_error = (
156- 'error: unable to open the bundle: invalid bundle URL: '
157+ 'error: unable to open the bundle: invalid charm or bundle URL: '
158 'invalid/bundle!')
159 self.assertIn(expected_error, mock_stderr.getvalue())
160
161
162=== modified file 'tox.ini'
163--- tox.ini 2015-11-30 09:18:47 +0000
164+++ tox.ini 2015-12-03 09:56:35 +0000
165@@ -72,7 +72,7 @@
166 # See https://launchpad.net/~juju/+archive/ubuntu/stable.
167 websocket-client==0.18.0
168 jujuclient==0.50.3
169- jujubundlelib==0.3.2
170+ jujubundlelib==0.4.1
171 urwid==1.2.1
172 # The distribution PyYAML requirement is used in this case.
173
174@@ -82,7 +82,7 @@
175 # Ubuntu 14.04 (trusty) distro dependencies.
176 websocket-client==0.12.0
177 jujuclient==0.17.5
178- jujubundlelib==0.3.2
179+ jujubundlelib==0.4.1
180 PyYAML==3.10
181 urwid==1.1.1
182
183@@ -92,7 +92,7 @@
184 # Ubuntu 15.04 (vivid) distro dependencies.
185 websocket-client==0.18.0
186 jujuclient==0.18.5
187- jujubundlelib==0.3.2
188+ jujubundlelib==0.4.1
189 PyYAML==3.11
190 urwid==1.2.1
191
192@@ -102,7 +102,7 @@
193 # Ubuntu 15.10 (wily) distro dependencies.
194 websocket-client==0.18.0
195 jujuclient==0.50.1
196- jujubundlelib==0.3.2
197+ jujubundlelib==0.4.1
198 PyYAML==3.11
199 urwid==1.2.1
200

Subscribers

People subscribed via source and target branches