Merge lp:~gnuoy/openstack-mojo-specs/mojo-openstack-specs-mitakatastic into lp:openstack-mojo-specs

Proposed by Liam Young
Status: Merged
Merged at revision: 242
Proposed branch: lp:~gnuoy/openstack-mojo-specs/mojo-openstack-specs-mitakatastic
Merge into: lp:openstack-mojo-specs
Diff against target: 502 lines (+275/-27)
11 files modified
helper/bundles/full.yaml (+6/-0)
helper/bundles/ha.yaml (+23/-0)
helper/scripts/mojo-spec-check.py (+2/-1)
helper/setup/upgrade_openstack.py (+51/-26)
helper/utils/os_versions.py (+105/-0)
specs/full_stack/next_deploy/mitaka/SPEC_INFO.txt (+2/-0)
specs/full_stack/next_deploy/mitaka/manifest (+22/-0)
specs/full_stack/next_ha_oneshot/mitaka/SPEC_INFO.txt (+3/-0)
specs/full_stack/next_ha_oneshot/mitaka/manifest (+31/-0)
specs/full_stack/next_openstack_upgrade/liberty/SPEC_INFO.txt (+2/-0)
specs/full_stack/next_openstack_upgrade/liberty/manifest (+28/-0)
To merge this branch: bzr merge lp:~gnuoy/openstack-mojo-specs/mojo-openstack-specs-mitakatastic
Reviewer Review Type Date Requested Status
OpenStack Charm Testing Maintainers Pending
Review via email: mp+283441@code.launchpad.net
To post a comment you must log in.
Revision history for this message
uosci-testing-bot (uosci-testing-bot) wrote :

charm_lint_check #17854 mojo-openstack-specs for gnuoy mp283441
    LINT OK: passed

Build: http://10.245.162.77:8080/job/charm_lint_check/17854/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'helper/bundles/full.yaml'
2--- helper/bundles/full.yaml 2015-08-05 08:40:27 +0000
3+++ helper/bundles/full.yaml 2016-01-21 13:19:38 +0000
4@@ -277,6 +277,12 @@
5 overrides:
6 openstack-origin: ppa:ubuntu-cloud-archive/liberty-staging
7 source: ppa:ubuntu-cloud-archive/liberty-staging
8+trusty-mitaka:
9+ inherits: openstack-icehouse
10+ series: trusty
11+ overrides:
12+ openstack-origin: cloud:trusty-mitaka/proposed
13+ source: cloud:trusty-mitaka
14 wily-liberty:
15 inherits: openstack-icehouse
16 series: wily
17
18=== modified file 'helper/bundles/ha.yaml'
19--- helper/bundles/ha.yaml 2015-11-02 17:05:14 +0000
20+++ helper/bundles/ha.yaml 2016-01-21 13:19:38 +0000
21@@ -256,3 +256,26 @@
22 vivid-kilo-ha:
23 inherits: openstack-services
24 series: vivid
25+trusty-mitaka-ha:
26+ inherits: openstack-services
27+ series: trusty
28+ overrides:
29+ openstack-origin: cloud:trusty-mitaka/proposed
30+ source: cloud:trusty-mitaka
31+trusty-mitaka-proposed:
32+ inherits: openstack-services
33+ series: trusty
34+ overrides:
35+ openstack-origin: cloud:trusty-mitaka/proposed
36+ source: cloud:trusty-mitaka/proposed
37+xenial-mitaka-ha:
38+ inherits: openstack-services
39+ series: xenial
40+ services:
41+ mysql:
42+ branch: lp:charms/trusty/mysql
43+xenial-mitaka-proposed:
44+ inherits: xenial-mitaka
45+ overrides:
46+ source: proposed
47+ openstack-origin: distro-proposed
48
49=== modified file 'helper/scripts/mojo-spec-check.py'
50--- helper/scripts/mojo-spec-check.py 2015-10-20 03:18:37 +0000
51+++ helper/scripts/mojo-spec-check.py 2016-01-21 13:19:38 +0000
52@@ -24,7 +24,8 @@
53 'icehouse': ['precise', 'trusty'],
54 'juno': ['trusty'],
55 'kilo': ['trusty', 'vivid'],
56- 'liberty': ['trusty', 'wily']
57+ 'liberty': ['trusty', 'wily'],
58+ 'mitaka': ['trusty', 'xenial'],
59 }
60
61
62
63=== modified file 'helper/setup/upgrade_openstack.py'
64--- helper/setup/upgrade_openstack.py 2015-10-13 14:19:50 +0000
65+++ helper/setup/upgrade_openstack.py 2016-01-21 13:19:38 +0000
66@@ -1,21 +1,15 @@
67 #!/usr/bin/python
68+import six
69+import re
70 import argparse
71 import sys
72 import utils.mojo_utils as mojo_utils
73 import logging
74-from collections import OrderedDict
75-
76-OPENSTACK_CODENAMES = OrderedDict([
77- ('2011.2', 'diablo'),
78- ('2012.1', 'essex'),
79- ('2012.2', 'folsom'),
80- ('2013.1', 'grizzly'),
81- ('2013.2', 'havana'),
82- ('2014.1', 'icehouse'),
83- ('2014.2', 'juno'),
84- ('2015.1', 'kilo'),
85- ('2015.2', 'liberty'),
86-])
87+from utils.os_versions import (
88+ OPENSTACK_CODENAMES,
89+ SWIFT_CODENAMES,
90+ PACKAGE_CODENAMES,
91+)
92
93 CHARM_TYPES = {
94 'neutron': {
95@@ -60,15 +54,43 @@
96 {'name': 'ceilometer', 'type': CHARM_TYPES['ceilometer']},
97 ]
98
99-
100-def get_os_code_info(pkg_version):
101- for entry in OPENSTACK_CODENAMES:
102- if entry in pkg_version:
103- return {'code_num': entry, 'code_name': OPENSTACK_CODENAMES[entry]}
104+# XXX get_swift_codename and get_os_code_info are based on the functions with
105+# the same name in ~charm-helpers/charmhelpers/contrib/openstack/utils.py
106+# It'd be neat if we actually shared a common library.
107+
108+
109+def get_swift_codename(version):
110+ '''Determine OpenStack codename that corresponds to swift version.'''
111+ codenames = [k for k, v in six.iteritems(SWIFT_CODENAMES) if version in v]
112+ return codenames[0]
113+
114+
115+def get_os_code_info(package, pkg_version):
116+ # {'code_num': entry, 'code_name': OPENSTACK_CODENAMES[entry]}
117+ pkg_version = pkg_version.split(':')[1:][0]
118+ if 'swift' in package:
119+ # Fully x.y.z match for swift versions
120+ match = re.match('^(\d+)\.(\d+)\.(\d+)', pkg_version)
121+ else:
122+ # x.y match only for 20XX.X
123+ # and ignore patch level for other packages
124+ match = re.match('^(\d+)\.(\d+)', pkg_version)
125+
126+ if match:
127+ pkg_version = match.group(0)
128+ if (package in PACKAGE_CODENAMES and
129+ pkg_version in PACKAGE_CODENAMES[package]):
130+ return PACKAGE_CODENAMES[package][pkg_version]
131+ else:
132+ # < Liberty co-ordinated project versions
133+ if 'swift' in package:
134+ return get_swift_codename(pkg_version)
135+ else:
136+ return OPENSTACK_CODENAMES[pkg_version]
137
138
139 def next_release(release):
140- old_index = OPENSTACK_CODENAMES.keys().index(release)
141+ old_index = OPENSTACK_CODENAMES.values().index(release)
142 new_index = old_index + 1
143 return OPENSTACK_CODENAMES.items()[new_index]
144
145@@ -80,14 +102,15 @@
146 continue
147 version = mojo_utils.get_pkg_version(service['name'],
148 service['type']['pkg'])
149- versions[service['name']] = get_os_code_info(version)
150+ versions[service['name']] = get_os_code_info(service['type']['pkg'],
151+ version)
152 return versions
153
154
155 def get_lowest_os_version(current_versions):
156- lowest_version = {'code_num': '2100', 'code_name': 'zebra'}
157+ lowest_version = 'zebra'
158 for svc in current_versions.keys():
159- if current_versions[svc]['code_name'] < lowest_version['code_name']:
160+ if current_versions[svc] < lowest_version:
161 lowest_version = current_versions[svc]
162 return lowest_version
163
164@@ -95,7 +118,7 @@
165 def get_upgrade_targets(target_release, current_versions):
166 upgrade_list = []
167 for svc in current_versions.keys():
168- if current_versions[svc]['code_name'] < target_release:
169+ if current_versions[svc] < target_release:
170 upgrade_list.append(svc)
171 return upgrade_list
172
173@@ -116,7 +139,7 @@
174 # If in auto mode find the lowest value openstack release across all
175 # services and make sure all servcies are upgraded to one release
176 # higher than the lowest
177- lowest_release = get_lowest_os_version(current_versions)['code_num']
178+ lowest_release = get_lowest_os_version(current_versions)
179 target_release = next_release(lowest_release)[1]
180 # Get a list of services that need upgrading
181 needs_upgrade = get_upgrade_targets(target_release, current_versions)
182@@ -132,8 +155,10 @@
183 logging.info('Upgrading {} to {}'.format(service['name'],
184 target_release))
185 ubuntu_version = mojo_utils.get_ubuntu_version(service['name'])
186- option = "{}=cloud:{}-{}".format(service['type']['origin_setting'],
187- ubuntu_version, target_release)
188+ option = "{}=cloud:{}-{}/proposed".format(
189+ service['type']['origin_setting'],
190+ ubuntu_version, target_release
191+ )
192 mojo_utils.juju_set(service['name'], option, wait=True)
193
194 if __name__ == "__main__":
195
196=== added file 'helper/utils/os_versions.py'
197--- helper/utils/os_versions.py 1970-01-01 00:00:00 +0000
198+++ helper/utils/os_versions.py 2016-01-21 13:19:38 +0000
199@@ -0,0 +1,105 @@
200+from collections import OrderedDict
201+
202+OPENSTACK_CODENAMES = OrderedDict([
203+ ('2011.2', 'diablo'),
204+ ('2012.1', 'essex'),
205+ ('2012.2', 'folsom'),
206+ ('2013.1', 'grizzly'),
207+ ('2013.2', 'havana'),
208+ ('2014.1', 'icehouse'),
209+ ('2014.2', 'juno'),
210+ ('2015.1', 'kilo'),
211+ ('2015.2', 'liberty'),
212+ ('2016.1', 'mitaka'),
213+])
214+
215+UBUNTU_OPENSTACK_RELEASE = OrderedDict([
216+ ('oneiric', 'diablo'),
217+ ('precise', 'essex'),
218+ ('quantal', 'folsom'),
219+ ('raring', 'grizzly'),
220+ ('saucy', 'havana'),
221+ ('trusty', 'icehouse'),
222+ ('utopic', 'juno'),
223+ ('vivid', 'kilo'),
224+ ('wily', 'liberty'),
225+ ('xenial', 'mitaka'),
226+])
227+
228+
229+OPENSTACK_CODENAMES = OrderedDict([
230+ ('2011.2', 'diablo'),
231+ ('2012.1', 'essex'),
232+ ('2012.2', 'folsom'),
233+ ('2013.1', 'grizzly'),
234+ ('2013.2', 'havana'),
235+ ('2014.1', 'icehouse'),
236+ ('2014.2', 'juno'),
237+ ('2015.1', 'kilo'),
238+ ('2015.2', 'liberty'),
239+ ('2016.1', 'mitaka'),
240+])
241+
242+# The ugly duckling - must list releases oldest to newest
243+SWIFT_CODENAMES = OrderedDict([
244+ ('diablo',
245+ ['1.4.3']),
246+ ('essex',
247+ ['1.4.8']),
248+ ('folsom',
249+ ['1.7.4']),
250+ ('grizzly',
251+ ['1.7.6', '1.7.7', '1.8.0']),
252+ ('havana',
253+ ['1.9.0', '1.9.1', '1.10.0']),
254+ ('icehouse',
255+ ['1.11.0', '1.12.0', '1.13.0', '1.13.1']),
256+ ('juno',
257+ ['2.0.0', '2.1.0', '2.2.0']),
258+ ('kilo',
259+ ['2.2.1', '2.2.2']),
260+ ('liberty',
261+ ['2.3.0', '2.4.0', '2.5.0']),
262+ ('mitaka',
263+ ['2.5.0']),
264+])
265+
266+# >= Liberty version->codename mapping
267+PACKAGE_CODENAMES = {
268+ 'nova-common': OrderedDict([
269+ ('12.0', 'liberty'),
270+ ('13.0', 'mitaka'),
271+ ]),
272+ 'neutron-common': OrderedDict([
273+ ('7.0', 'liberty'),
274+ ('8.0', 'mitaka'),
275+ ]),
276+ 'cinder-common': OrderedDict([
277+ ('7.0', 'liberty'),
278+ ('8.0', 'mitaka'),
279+ ]),
280+ 'keystone': OrderedDict([
281+ ('8.0', 'liberty'),
282+ ('9.0', 'mitaka'),
283+ ]),
284+ 'horizon-common': OrderedDict([
285+ ('8.0', 'liberty'),
286+ ('9.0', 'mitaka'),
287+ ]),
288+ 'ceilometer-common': OrderedDict([
289+ ('5.0', 'liberty'),
290+ ('6.0', 'mitaka'),
291+ ]),
292+ 'heat-common': OrderedDict([
293+ ('5.0', 'liberty'),
294+ ('6.0', 'mitaka'),
295+ ]),
296+ 'glance-common': OrderedDict([
297+ ('11.0', 'liberty'),
298+ ('12.0', 'mitaka'),
299+ ]),
300+ 'openstack-dashboard': OrderedDict([
301+ ('8.0', 'liberty'),
302+ ('9.0', 'mitaka'),
303+ ]),
304+}
305
306=== added directory 'specs/full_stack/next_deploy/mitaka'
307=== added file 'specs/full_stack/next_deploy/mitaka/SPEC_INFO.txt'
308--- specs/full_stack/next_deploy/mitaka/SPEC_INFO.txt 1970-01-01 00:00:00 +0000
309+++ specs/full_stack/next_deploy/mitaka/SPEC_INFO.txt 2016-01-21 13:19:38 +0000
310@@ -0,0 +1,2 @@
311+This spec performs a non-ha deploy using the next charms and then runs tests
312+to validate the deployment
313
314=== added symlink 'specs/full_stack/next_deploy/mitaka/check_juju.py'
315=== target is u'../../../../helper/tests/check_juju.py'
316=== added symlink 'specs/full_stack/next_deploy/mitaka/collect-next-trusty'
317=== target is u'../../../../helper/collect/collect-next'
318=== added symlink 'specs/full_stack/next_deploy/mitaka/collect-next-xenial'
319=== target is u'../../../../helper/collect/collect-next-wily'
320=== added symlink 'specs/full_stack/next_deploy/mitaka/full.yaml'
321=== target is u'../../../../helper/bundles/full.yaml'
322=== added symlink 'specs/full_stack/next_deploy/mitaka/image_setup.py'
323=== target is u'../../../../helper/setup/image_setup.py'
324=== added symlink 'specs/full_stack/next_deploy/mitaka/images.yaml'
325=== target is u'../../../../helper/setup/images.yaml'
326=== added symlink 'specs/full_stack/next_deploy/mitaka/keystone_setup.py'
327=== target is u'../../../../helper/setup/keystone_setup.py'
328=== added symlink 'specs/full_stack/next_deploy/mitaka/keystone_users.yaml'
329=== target is u'../../../../helper/setup/keystone_users.yaml'
330=== added file 'specs/full_stack/next_deploy/mitaka/manifest'
331--- specs/full_stack/next_deploy/mitaka/manifest 1970-01-01 00:00:00 +0000
332+++ specs/full_stack/next_deploy/mitaka/manifest 2016-01-21 13:19:38 +0000
333@@ -0,0 +1,22 @@
334+# Collect the charm branches from Launchpad
335+collect config=collect-next-${MOJO_SERIES}
336+
337+# Use juju deployer with full.yaml bundle
338+deploy config=full.yaml delay=0 wait=True target=${MOJO_SERIES}-mitaka
339+
340+# Check juju statuses are green and that hooks have finished
341+verify config=check_juju.py
342+
343+# Create sdn on overcloud
344+script config=network_setup.py
345+
346+# Setup glance images
347+script config=image_setup.py
348+
349+# Setup keystone users
350+script config=keystone_setup.py
351+
352+# Create 1 * tiny cirros and 1 * small precise instances on the overcloud
353+verify config=simple_os_checks.py MACHINES='cirros:m1.tiny:1 precise:m1.small:1' CLOUDINIT_WAIT="300"
354+
355+# Success
356
357=== added symlink 'specs/full_stack/next_deploy/mitaka/network.yaml'
358=== target is u'../../../../helper/setup/network.yaml'
359=== added symlink 'specs/full_stack/next_deploy/mitaka/network_setup.py'
360=== target is u'../../../../helper/setup/network_setup.py'
361=== added symlink 'specs/full_stack/next_deploy/mitaka/simple_os_checks.py'
362=== target is u'../../../../helper/tests/simple_os_checks.py'
363=== added symlink 'specs/full_stack/next_deploy/mitaka/utils'
364=== target is u'../../../../helper/utils'
365=== added directory 'specs/full_stack/next_ha_oneshot/mitaka'
366=== added file 'specs/full_stack/next_ha_oneshot/mitaka/SPEC_INFO.txt'
367--- specs/full_stack/next_ha_oneshot/mitaka/SPEC_INFO.txt 1970-01-01 00:00:00 +0000
368+++ specs/full_stack/next_ha_oneshot/mitaka/SPEC_INFO.txt 2016-01-21 13:19:38 +0000
369@@ -0,0 +1,3 @@
370+This spec performs a ha deploy in one shot (not phased) then runs tests to
371+validate the deployment. The assumption is that the version of juju has
372+leadership enabled.
373
374=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/check_juju.py'
375=== target is u'../../../../helper/tests/check_juju.py'
376=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/collect-next-ha'
377=== target is u'../../../../helper/collect/collect-next-ha'
378=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/ha.yaml'
379=== target is u'../../../../helper/bundles/ha.yaml'
380=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/image_setup.py'
381=== target is u'../../../../helper/setup/image_setup.py'
382=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/images.yaml'
383=== target is u'../../../../helper/setup/images.yaml'
384=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/keystone_setup.py'
385=== target is u'../../../../helper/setup/keystone_setup.py'
386=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/keystone_users.yaml'
387=== target is u'../../../../helper/setup/keystone_users.yaml'
388=== added file 'specs/full_stack/next_ha_oneshot/mitaka/manifest'
389--- specs/full_stack/next_ha_oneshot/mitaka/manifest 1970-01-01 00:00:00 +0000
390+++ specs/full_stack/next_ha_oneshot/mitaka/manifest 2016-01-21 13:19:38 +0000
391@@ -0,0 +1,31 @@
392+# Collect the charm branches from Launchpad
393+collect config=collect-next-ha
394+
395+# Use juju deployer to create the units for the deployment
396+deploy config=ha.yaml delay=0 wait=True target=${MOJO_SERIES}-mitaka-ha
397+
398+# Check juju statuses are green and that hooks have finished
399+verify config=check_juju.py
400+
401+# Examine the available networks and set vips for services need updates to support this
402+#script config=set_vips.py
403+
404+# Check juju statuses are green and that hooks have finished
405+verify config=check_juju.py
406+
407+# Create sdn on overcloud
408+script config=network_setup.py
409+
410+# Setup glance images
411+script config=image_setup.py
412+
413+# Setup keystone users
414+script config=keystone_setup.py
415+
416+# Create 1 * tiny cirros and 1 * small precise instances on the overcloud
417+verify config=simple_os_checks.py MACHINES='cirros:m1.tiny:1 precise:m1.small:1' CLOUDINIT_WAIT="300"
418+
419+# Test obj store by sending and recieving files
420+verify config=test_obj_store.py
421+
422+# Success
423
424=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/network.yaml'
425=== target is u'../../../../helper/setup/network.yaml'
426=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/network_setup.py'
427=== target is u'../../../../helper/setup/network_setup.py'
428=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/set_vips.py'
429=== target is u'../../../../helper/setup/set_vips.py'
430=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/simple_os_checks.py'
431=== target is u'../../../../helper/tests/simple_os_checks.py'
432=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/test_obj_store.py'
433=== target is u'../../../../helper/tests/test_obj_store.py'
434=== added symlink 'specs/full_stack/next_ha_oneshot/mitaka/utils'
435=== target is u'../../../../helper/utils'
436=== added directory 'specs/full_stack/next_openstack_upgrade/liberty'
437=== added file 'specs/full_stack/next_openstack_upgrade/liberty/SPEC_INFO.txt'
438--- specs/full_stack/next_openstack_upgrade/liberty/SPEC_INFO.txt 1970-01-01 00:00:00 +0000
439+++ specs/full_stack/next_openstack_upgrade/liberty/SPEC_INFO.txt 2016-01-21 13:19:38 +0000
440@@ -0,0 +1,2 @@
441+This spec performs a non-ha deploy using the next charms and then upgrades
442+to the next version of openstack
443
444=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/check_juju.py'
445=== target is u'../../../../helper/tests/check_juju.py'
446=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/collect-next-trusty'
447=== target is u'../../../../helper/collect/collect-next'
448=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/collect-next-wily'
449=== target is u'../../../../helper/collect/collect-next'
450=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/full.yaml'
451=== target is u'../../../../helper/bundles/full.yaml'
452=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/image_setup.py'
453=== target is u'../../../../helper/setup/image_setup.py'
454=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/images.yaml'
455=== target is u'../../../../helper/setup/images.yaml'
456=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/keystone_setup.py'
457=== target is u'../../../../helper/setup/keystone_setup.py'
458=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/keystone_users.yaml'
459=== target is u'../../../../helper/setup/keystone_users.yaml'
460=== added file 'specs/full_stack/next_openstack_upgrade/liberty/manifest'
461--- specs/full_stack/next_openstack_upgrade/liberty/manifest 1970-01-01 00:00:00 +0000
462+++ specs/full_stack/next_openstack_upgrade/liberty/manifest 2016-01-21 13:19:38 +0000
463@@ -0,0 +1,28 @@
464+# Collect the charm branches from Launchpad
465+collect config=collect-next-${MOJO_SERIES}
466+
467+# Use juju deployer with full.yaml bundle
468+deploy config=full.yaml delay=0 wait=True target=${MOJO_SERIES}-liberty
469+
470+# Check juju statuses are green and that hooks have finished
471+verify config=check_juju.py
472+
473+# Create sdn on overcloud
474+script config=network_setup.py
475+
476+# Setup glance images
477+script config=image_setup.py
478+
479+# Setup keystone users
480+script config=keystone_setup.py
481+
482+# Create 1 * tiny cirros and 1 * small precise instances on the overcloud
483+verify config=simple_os_checks.py MACHINES='cirros:m1.tiny:1' CLOUDINIT_WAIT="300"
484+
485+# Upgrade Openstack
486+script config=upgrade_openstack.py
487+
488+# Create 1 * tiny cirros and 1 * small precise instances on the overcloud
489+verify config=simple_os_checks.py MACHINES='cirros:m1.tiny:1' CLOUDINIT_WAIT="300"
490+
491+# Success
492
493=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/network.yaml'
494=== target is u'../../../../helper/setup/network.yaml'
495=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/network_setup.py'
496=== target is u'../../../../helper/setup/network_setup.py'
497=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/simple_os_checks.py'
498=== target is u'../../../../helper/tests/simple_os_checks.py'
499=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/upgrade_openstack.py'
500=== target is u'../../../../helper/setup/upgrade_openstack.py'
501=== added symlink 'specs/full_stack/next_openstack_upgrade/liberty/utils'
502=== target is u'../../../../helper/utils'

Subscribers

People subscribed via source and target branches