Affected files (+19, -10 lines):
A [revision details]
M quickstart/manage.py
M quickstart/models/bundles.py
M quickstart/tests/models/test_bundles.py
M tox.ini
# Handle bundle deployment.
if options.bundle_source is not None:
- services = ', '.join(options.bundle.services())
+ services = ', '.join(options.bundle.services().keys()) print('requesting a deployment of {} with the following
services:\n'
' {}'.format(options.bundle, services))
if options.bundle.reference is not None:
def services(self):
- """Return a list of service names included in the bundle.
+ """Return an ordered dict mapping services and their number of
units.
- Service names are returned in alphabetical order.
+ In the dict, service names are returned in alphabetical order.
"""
- return sorted(self.data['services'].keys())
+ services = self.data['services']
+ result = collections.OrderedDict()
+ for service_name in sorted(services.keys()):
+ result[service_name] = services[service_name]['num_units']
+ return result
def test_services(self):
- # Bundle services can be easily retrieved.
- self.assertEqual(['mysql', 'wordpress'], self.bundle.services())
+ # Bundle services and their number of units can be easily
retrieved.
+ expected_services = collections.OrderedDict(
+ [('mysql', 0), ('wordpress', 1)])
+ self.assertEqual(expected_services, self.bundle.services())
Reviewers: mp+257387_ code.launchpad. net,
Message:
Please take a look.
Description:
Some small changes in preparation for change sets.
Extend the services method of the bundle model to
include the number of units for each service.
Use the newer jujubundlelib.
https:/ /code.launchpad .net/~frankban/ juju-quickstart /changeset- prep/+merge/ 257387
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/231120043/
Affected files (+19, -10 lines): manage. py models/ bundles. py tests/models/ test_bundles. py
A [revision details]
M quickstart/
M quickstart/
M quickstart/
M tox.ini
Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision:
<email address hidden>
+New revision:
<email address hidden>
Index: tox.ini /launchpad. net/~juju/ +archive/ ubuntu/ stable. -client= =0.18.0 t==0.50. 1 =0.1.3 =0.1.4
=== modified file 'tox.ini'
--- tox.ini 2015-04-23 09:00:26 +0000
+++ tox.ini 2015-04-24 13:31:28 +0000
@@ -72,7 +72,7 @@
# See https:/
websocket
jujuclien
- jujubundlelib=
+ jujubundlelib=
urwid==1.2.1
# The distribution PyYAML requirement is used in this case.
@@ -82,7 +82,7 @@ -client= =0.12.0 t==0.17. 5 =0.1.3 =0.1.4
# Ubuntu 14.04 (trusty) distro dependencies.
websocket
jujuclien
- jujubundlelib=
+ jujubundlelib=
PyYAML==3.10
urwid==1.1.1
@@ -92,7 +92,7 @@ -client= =0.12.0 t==0.17. 5 =0.1.3 =0.1.4
# Ubuntu 14.10 (utopic) distro dependencies.
websocket
jujuclien
- jujubundlelib=
+ jujubundlelib=
PyYAML==3.11
urwid==1.2.1
@@ -102,7 +102,7 @@ -client= =0.18.0 t==0.18. 5 =0.1.3 =0.1.4
# Ubuntu 15.04 (vivid) distro dependencies.
websocket
jujuclien
- jujubundlelib=
+ jujubundlelib=
PyYAML==3.11
urwid==1.2.1
Index: quickstart/ manage. py manage. py' manage. py 2015-04-21 10:22:46 +0000 manage. py 2015-04-24 13:31:28 +0000
=== modified file 'quickstart/
--- quickstart/
+++ quickstart/
@@ -575,7 +575,7 @@
# Handle bundle deployment. bundle_ source is not None: options. bundle. services( )) options. bundle. services( ).keys( ))
print( 'requesting a deployment of {} with the following options. bundle, services)) bundle. reference is not None:
if options.
- services = ', '.join(
+ services = ', '.join(
services:\n'
' {}'.format(
if options.
Index: quickstart/ models/ bundles. py models/ bundles. py' models/ bundles. py 2015-04-23 12:09:29 +0000 models/ bundles. py 2015-04-24 13:31:28 +0000 yaml_dump( {'bundle' : self.data})
=== modified file 'quickstart/
--- quickstart/
+++ quickstart/
@@ -106,11 +106,15 @@
return serializers.
def services(self):
- """Return a list of service names included in the bundle.
+ """Return an ordered dict mapping services and their number of
units.
- Service names are returned in alphabetical order. self.data[ 'services' ].keys( )) 'services' ] OrderedDict( ) services. keys()) : service_ name] = services[ service_ name][' num_units' ]
+ In the dict, service names are returned in alphabetical order.
"""
- return sorted(
+ services = self.data[
+ result = collections.
+ for service_name in sorted(
+ result[
+ return result
def from_source(source, name=None):
Index: quickstart/ tests/models/ test_bundles. py tests/models/ test_bundles. py' tests/models/ test_bundles. py 2015-04-23 12:13:27 +0000 tests/models/ test_bundles. py 2015-04-24 13:31:28 +0000
=== modified file 'quickstart/
--- quickstart/
+++ quickstart/
@@ -18,6 +18,7 @@
from __future__ import unicode_literals
+import collections
import json
import unittest
@@ -115,8 +116,10 @@
self. assertEqual( expected_ content, self.bundle. serialize_ legacy( ))
def test_services( self): l(['mysql' , 'wordpress'], self.bundle. services( )) OrderedDict( l(expected_ services, self.bundle. services( ))
- # Bundle services can be easily retrieved.
- self.assertEqua
+ # Bundle services and their number of units can be easily
retrieved.
+ expected_services = collections.
+ [('mysql', 0), ('wordpress', 1)])
+ self.assertEqua
class TestFromSource(