Merge lp:~sinzui/juju-release-tools/agent-archive into lp:juju-release-tools

Proposed by Curtis Hovey on 2015-05-27
Status: Merged
Merged at revision: 186
Proposed branch: lp:~sinzui/juju-release-tools/agent-archive
Merge into: lp:juju-release-tools
Diff against target: 332 lines (+51/-48)
4 files modified
agent_archive.py (+12/-10)
assemble-streams.bash (+2/-2)
get-revision-build-artefacts.bash (+2/-1)
tests/test_agent_archive.py (+35/-35)
To merge this branch: bzr merge lp:~sinzui/juju-release-tools/agent-archive
Reviewer Review Type Date Requested Status
Aaron Bentley (community) 2015-05-27 Approve on 2015-05-27
Review via email: mp+260321@code.launchpad.net

Description of the Change

Rename win-agents to agent-archive, and win_agent_archive.py to agent_archive.py

This branch makes two mechanical changes and also adds the build-centos job to the list of jobs to get release binaries from.

Rename win_agent_archive.py to agent_archive.py and update everything that calls or imports it.

Rename juju-qa-data/win-agents to juju-qa-data/agent-archive. The agents are already at juju-qa-data/agent-archive. These commands used during releases work:

     ./juju-release-tools/agent_archive.py --config $JUJU_HOME/juju-qa.s3cfg add juju-1.24-beta5-centos7-amd64.tgz
     ./juju-release-tools/agent_archive.py --config $JUJU_HOME/juju-qa.s3cfg get 1.24-beta5 ./

To post a comment you must log in.
Aaron Bentley (abentley) wrote :

Looks reasonable to me. If it runs, land it.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== renamed file 'win_agent_archive.py' => 'agent_archive.py'
2--- win_agent_archive.py 2015-05-26 19:35:48 +0000
3+++ agent_archive.py 2015-05-27 15:02:21 +0000
4@@ -11,7 +11,7 @@
5
6
7 # The S3 container and path to add to and get from.
8-S3_CONTAINER = 's3://juju-qa-data/win-agents'
9+S3_CONTAINER = 's3://juju-qa-data/agent-archive'
10 # The set of agents to make.
11 AGENT_TEMPLATES = (
12 'juju-{}-centos7-amd64.tgz',
13@@ -78,7 +78,7 @@
14
15
16 def add_agents(args):
17- """Upload agents to the S3 win-agent location.
18+ """Upload agents to the S3 agent-archive location.
19
20 It is an error to overwrite an existing agent, or pass an agent that
21 does not appear to be a win agent.
22@@ -164,7 +164,7 @@
23
24 def parse_args(args=None):
25 """Return the argument parser for this program."""
26- parser = ArgumentParser("Manage win agents in the archive.")
27+ parser = ArgumentParser("Manage released agents in the agent-archive.")
28 parser.add_argument(
29 '-d', '--dry-run', action="store_true", default=False,
30 help='Do not make changes.')
31@@ -176,28 +176,30 @@
32 help='The S3 config file.')
33 subparsers = parser.add_subparsers(help='sub-command help')
34 # add juju-1.21.0-win2012-amd64.tgz
35- parser_add = subparsers.add_parser('add', help='Add win-agents')
36+ parser_add = subparsers.add_parser(
37+ 'add', help='Add an agent to the archive')
38 parser_add.add_argument(
39 'source_agent',
40- help="The win-agent to create all the agents from.")
41+ help="The agent to add (and copy to other series).")
42 parser_add.set_defaults(func=add_agents)
43 # get 1.21.0 ./workspace
44- parser_get = subparsers.add_parser('get', help='get win-agents')
45+ parser_get = subparsers.add_parser(
46+ 'get', help='get agents from the archive')
47 parser_get.add_argument(
48- 'version', help="The version of win-agent to download")
49+ 'version', help="The version of agents to download")
50 parser_get.add_argument(
51 'destination', help="The path to download the files to.")
52 parser_get.set_defaults(func=get_agents)
53 # delete 1.21.0
54- parser_delete = subparsers.add_parser('delete', help='delete win-agents')
55+ parser_delete = subparsers.add_parser('delete', help='delete agent-archive')
56 parser_delete.add_argument(
57- 'version', help="The version of win-agent to delete")
58+ 'version', help="The version of agents to delete")
59 parser_delete.set_defaults(func=delete_agents)
60 return parser.parse_args(args)
61
62
63 def main(argv):
64- """Manage win-agents in the archive."""
65+ """Manage agent-archive in the archive."""
66 args = parse_args(argv)
67 try:
68 args.func(args)
69
70=== modified file 'assemble-streams.bash'
71--- assemble-streams.bash 2015-05-05 13:45:53 +0000
72+++ assemble-streams.bash 2015-05-27 15:02:21 +0000
73@@ -189,8 +189,8 @@
74 rm -r $DEST_DEBS/juju-core
75 fi
76 if [[ -e $JUJU_DIR/juju-qa.s3cfg ]]; then
77- echo "checking s3://juju-qa-data/win-agents for $RELEASE."
78- $SCRIPT_DIR/win_agent_archive.py --config $JUJU_DIR/juju-qa.s3cfg \
79+ echo "checking s3://juju-qa-data/agent-archive for $RELEASE."
80+ $SCRIPT_DIR/agent_archive.py --config $JUJU_DIR/juju-qa.s3cfg \
81 get $RELEASE $DEST_DEBS
82 fi
83 fi
84
85=== modified file 'get-revision-build-artefacts.bash'
86--- get-revision-build-artefacts.bash 2015-01-07 22:21:51 +0000
87+++ get-revision-build-artefacts.bash 2015-05-27 15:02:21 +0000
88@@ -6,7 +6,8 @@
89
90 ALL_FILES=$(s3cmd -c $JUJU_HOME/juju-qa.s3cfg ls -r s3://$CONTAINER_BASE/*)
91
92-JOBS="build-revision build-osx-client build-win-agent build-win-client"
93+JOBS="build-revision build-osx-client
94+ build-win-agent build-win-client build-centos"
95
96 for job in $JOBS; do
97 artefacts=$(echo "$ALL_FILES" | sed -r "/$job\/build-/!d; s,^.*s3:,s3:,")
98
99=== renamed file 'tests/test_win_agent_archive.py' => 'tests/test_agent_archive.py'
100--- tests/test_win_agent_archive.py 2015-05-26 19:35:48 +0000
101+++ tests/test_agent_archive.py 2015-05-27 15:02:21 +0000
102@@ -2,7 +2,7 @@
103 import os
104 from unittest import TestCase
105
106-from win_agent_archive import (
107+from agent_archive import (
108 add_agents,
109 delete_agents,
110 get_agents,
111@@ -28,7 +28,7 @@
112 class WinAgentArchive(TestCase):
113
114 def test_main_options(self):
115- with patch('win_agent_archive.add_agents') as mock:
116+ with patch('agent_archive.add_agents') as mock:
117 main(['-d', '-v', '-c', 'foo', 'add', 'bar'])
118 args, kwargs = mock.call_args
119 args = args[0]
120@@ -37,7 +37,7 @@
121 self.assertEqual('foo', args.config)
122
123 def test_main_add(self):
124- with patch('win_agent_archive.add_agents') as mock:
125+ with patch('agent_archive.add_agents') as mock:
126 main(['add', 'path/juju-1.21.0-win2012-amd64.tgz'])
127 args, kwargs = mock.call_args
128 args = args[0]
129@@ -47,7 +47,7 @@
130 self.assertFalse(args.dry_run)
131
132 def test_main_get(self):
133- with patch('win_agent_archive.get_agents') as mock:
134+ with patch('agent_archive.get_agents') as mock:
135 main(['get', '1.21.0', './'])
136 args, kwargs = mock.call_args
137 args = args[0]
138@@ -57,7 +57,7 @@
139 self.assertFalse(args.dry_run)
140
141 def test_main_delete(self):
142- with patch('win_agent_archive.delete_agents') as mock:
143+ with patch('agent_archive.delete_agents') as mock:
144 main(['delete', '1.21.0'])
145 args, kwargs = mock.call_args
146 args = args[0]
147@@ -105,7 +105,7 @@
148 get_source_agent_os('juju-1.24.footu-amd64.tgz')
149
150 def test_listing_to_files(self):
151- start = '2014-10-23 22:11 9820182 s3://juju-qa-data/win-agents/%s'
152+ start = '2014-10-23 22:11 9820182 s3://juju-qa-data/agent-archive/%s'
153 listing = []
154 expected_agents = []
155 agents = [
156@@ -114,13 +114,13 @@
157 ]
158 for agent in agents:
159 listing.append(start % agent)
160- expected_agents.append('s3://juju-qa-data/win-agents/%s' % agent)
161+ expected_agents.append('s3://juju-qa-data/agent-archive/%s' % agent)
162 agents = listing_to_files('\n'.join(listing))
163 self.assertEqual(expected_agents, agents)
164
165 def test_add_agent_with_bad_source_raises_error(self):
166 cmd_args = FakeArgs(source_agent='juju-1.21.0-trusty-amd64.tgz')
167- with patch('win_agent_archive.run') as mock:
168+ with patch('agent_archive.run') as mock:
169 with self.assertRaises(ValueError) as e:
170 add_agents(cmd_args)
171 self.assertIn('does not look like a agent', str(e.exception))
172@@ -128,7 +128,7 @@
173
174 def test_add_agent_with_unexpected_version_raises_error(self):
175 cmd_args = FakeArgs(source_agent='juju-1.21.0-win2013-amd64.tgz')
176- with patch('win_agent_archive.run') as mock:
177+ with patch('agent_archive.run') as mock:
178 with self.assertRaises(ValueError) as e:
179 add_agents(cmd_args)
180 self.assertIn('not match an expected version', str(e.exception))
181@@ -136,101 +136,101 @@
182
183 def test_add_agent_with_exist_source_raises_error(self):
184 cmd_args = FakeArgs(source_agent='juju-1.21.0-win2012-amd64.tgz')
185- output = 's3://juju-qa-data/win-agents/juju-1.21.0-win2012-amd64.tgz'
186- with patch('win_agent_archive.run', return_value=output) as mock:
187+ output = 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012-amd64.tgz'
188+ with patch('agent_archive.run', return_value=output) as mock:
189 with self.assertRaises(ValueError) as e:
190 add_agents(cmd_args)
191 self.assertIn('Agents cannot be overwritten', str(e.exception))
192 args, kwargs = mock.call_args
193 self.assertEqual(
194- (['ls', 's3://juju-qa-data/win-agents/juju-1.21.0*'], ),
195+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.21.0*'], ),
196 args)
197 self.assertIs(None, kwargs['config'])
198
199 def test_add_agent_puts_and_copies_win(self):
200 cmd_args = FakeArgs(source_agent='juju-1.21.0-win2012-amd64.tgz')
201- with patch('win_agent_archive.run', return_value='') as mock:
202+ with patch('agent_archive.run', return_value='') as mock:
203 add_agents(cmd_args)
204 self.assertEqual(8, mock.call_count)
205 output, args, kwargs = mock.mock_calls[0]
206 self.assertEqual(
207- (['ls', 's3://juju-qa-data/win-agents/juju-1.21.0*'], ),
208+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.21.0*'], ),
209 args)
210 output, args, kwargs = mock.mock_calls[1]
211 agent_path = os.path.abspath(cmd_args.source_agent)
212 self.assertEqual(
213 (['put', agent_path,
214- 's3://juju-qa-data/win-agents/juju-1.21.0-win2012-amd64.tgz'], ),
215+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012-amd64.tgz'], ),
216 args)
217 # The remaining calls after the put is a fast cp to the other names.
218 output, args, kwargs = mock.mock_calls[2]
219 self.assertEqual(
220 (['cp',
221- 's3://juju-qa-data/win-agents/juju-1.21.0-win2012-amd64.tgz',
222- 's3://juju-qa-data/win-agents/juju-1.21.0-win2012hvr2-amd64.tgz'
223+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012-amd64.tgz',
224+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012hvr2-amd64.tgz'
225 ], ),
226 args)
227 output, args, kwargs = mock.mock_calls[7]
228 self.assertEqual(
229 (['cp',
230- 's3://juju-qa-data/win-agents/juju-1.21.0-win2012-amd64.tgz',
231- 's3://juju-qa-data/win-agents/juju-1.21.0-win81-amd64.tgz'], ),
232+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012-amd64.tgz',
233+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win81-amd64.tgz'], ),
234 args)
235
236 def test_add_agent_puts_centos(self):
237 cmd_args = FakeArgs(source_agent='juju-1.24.0-centos7-amd64.tgz')
238- with patch('win_agent_archive.run', return_value='') as mock:
239+ with patch('agent_archive.run', return_value='') as mock:
240 add_agents(cmd_args)
241 self.assertEqual(2, mock.call_count)
242 output, args, kwargs = mock.mock_calls[0]
243 self.assertEqual(
244- (['ls', 's3://juju-qa-data/win-agents/juju-1.24.0*'], ),
245+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.24.0*'], ),
246 args)
247 output, args, kwargs = mock.mock_calls[1]
248 agent_path = os.path.abspath(cmd_args.source_agent)
249 self.assertEqual(
250 (['put', agent_path,
251- 's3://juju-qa-data/win-agents/juju-1.24.0-centos7-amd64.tgz'], ),
252+ 's3://juju-qa-data/agent-archive/juju-1.24.0-centos7-amd64.tgz'], ),
253 args)
254
255 def test_get_agent(self):
256 cmd_args = FakeArgs(version='1.21.0', destination='./')
257 destination = os.path.abspath(cmd_args.destination)
258- with patch('win_agent_archive.run') as mock:
259+ with patch('agent_archive.run') as mock:
260 get_agents(cmd_args)
261 args, kwargs = mock.call_args
262 self.assertEqual(
263- (['get', 's3://juju-qa-data/win-agents/juju-1.21.0*',
264+ (['get', 's3://juju-qa-data/agent-archive/juju-1.21.0*',
265 destination], ),
266 args)
267
268 def test_delete_agent_without_matches_error(self):
269 cmd_args = FakeArgs(version='1.21.0')
270- with patch('win_agent_archive.run', return_value='') as mock:
271+ with patch('agent_archive.run', return_value='') as mock:
272 with self.assertRaises(ValueError) as e:
273 delete_agents(cmd_args)
274 self.assertIn('No 1.21.0 agents found', str(e.exception))
275 args, kwargs = mock.call_args
276 self.assertEqual(
277- (['ls', 's3://juju-qa-data/win-agents/juju-1.21.0*'], ),
278+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.21.0*'], ),
279 args)
280 self.assertIs(None, kwargs['config'], )
281
282 def test_delete_agent_without_yes(self):
283 cmd_args = FakeArgs(version='1.21.0')
284 fake_listing = 'juju-1.21.0-win2012-amd64.tgz'
285- with patch('win_agent_archive.run', return_value=fake_listing) as mock:
286- with patch('win_agent_archive.get_input', return_value=''):
287+ with patch('agent_archive.run', return_value=fake_listing) as mock:
288+ with patch('agent_archive.get_input', return_value=''):
289 delete_agents(cmd_args)
290 self.assertEqual(1, mock.call_count)
291 args, kwargs = mock.call_args
292 self.assertEqual(
293- (['ls', 's3://juju-qa-data/win-agents/juju-1.21.0*'], ),
294+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.21.0*'], ),
295 args)
296
297 def test_delete_agent_with_yes(self):
298 cmd_args = FakeArgs(version='1.21.0')
299- start = '2014-10-23 22:11 9820182 s3://juju-qa-data/win-agents/%s'
300+ start = '2014-10-23 22:11 9820182 s3://juju-qa-data/agent-archive/%s'
301 listing = []
302 agents = [
303 'juju-1.21.0-win2012-amd64.tgz',
304@@ -239,23 +239,23 @@
305 for agent in agents:
306 listing.append(start % agent)
307 fake_listing = '\n'.join(listing)
308- with patch('win_agent_archive.run', return_value=fake_listing) as mock:
309- with patch('win_agent_archive.get_input', return_value='y'):
310+ with patch('agent_archive.run', return_value=fake_listing) as mock:
311+ with patch('agent_archive.get_input', return_value='y'):
312 delete_agents(cmd_args)
313 self.assertEqual(3, mock.call_count)
314 output, args, kwargs = mock.mock_calls[0]
315 self.assertEqual(
316- (['ls', 's3://juju-qa-data/win-agents/juju-1.21.0*'], ),
317+ (['ls', 's3://juju-qa-data/agent-archive/juju-1.21.0*'], ),
318 args)
319 output, args, kwargs = mock.mock_calls[1]
320 self.assertEqual(
321 (['del',
322- 's3://juju-qa-data/win-agents/juju-1.21.0-win2012-amd64.tgz'], ),
323+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win2012-amd64.tgz'], ),
324 args)
325 output, args, kwargs = mock.mock_calls[2]
326 self.assertEqual(
327 (['del',
328- 's3://juju-qa-data/win-agents/juju-1.21.0-win8.1-amd64.tgz'], ),
329+ 's3://juju-qa-data/agent-archive/juju-1.21.0-win8.1-amd64.tgz'], ),
330 args)
331 self.assertIs(None, kwargs['config'])
332 self.assertFalse(kwargs['dry_run'])

Subscribers

People subscribed via source and target branches