Fix deploying non-stable channels and explicit revs (#144)
authorCory Johns <johnsca@gmail.com>
Wed, 14 Jun 2017 17:58:20 +0000 (13:58 -0400)
committerGitHub <noreply@github.com>
Wed, 14 Jun 2017 17:58:20 +0000 (13:58 -0400)
* Fix deploying non-stable channels and explicit revs

Fixes #143

* Bump timeout on status test

* Minor docstring fix

juju/model.py
tests/integration/test_machine.py
tests/integration/test_model.py
tox.ini

index 160707b..4db711b 100644 (file)
@@ -1002,7 +1002,7 @@ class Model(object):
         :param dict bind: <charm endpoint>:<network space> pairs
         :param dict budget: <budget name>:<limit> pairs
         :param str channel: Charm store channel from which to retrieve
-            the charm or bundle, e.g. 'development'
+            the charm or bundle, e.g. 'edge'
         :param dict config: Charm configuration dictionary
         :param constraints: Service constraints
         :type constraints: :class:`juju.Constraints`
@@ -1040,7 +1040,7 @@ class Model(object):
         if is_local:
             entity_id = entity_url.replace('local:', '')
         else:
-            entity = await self.charmstore.entity(entity_url)
+            entity = await self.charmstore.entity(entity_url, channel=channel)
             entity_id = entity['Id']
 
         client_facade = client.ClientFacade.from_connection(self.connection)
@@ -1072,8 +1072,6 @@ class Model(object):
                     application_name = entity['Meta']['charm-metadata']['Name']
                 if not series:
                     series = self._get_series(entity_url, entity)
-                if not channel:
-                    channel = 'stable'
                 await client_facade.AddCharm(channel, entity_id)
                 # XXX: we're dropping local resources here, but we don't
                 # actually support them yet anyway
index 5909c05..499a7d3 100644 (file)
@@ -28,7 +28,7 @@ async def test_status(event_loop):
         await asyncio.wait_for(
             model.block_until(lambda: (machine.status == 'running' and
                                        machine.agent_status == 'started')),
-            timeout=240)
+            timeout=480)
 
         assert machine.status == 'running'
         # there is some inconsistency in the message case between providers
index 92d2055..088dcd5 100644 (file)
@@ -34,6 +34,22 @@ async def test_deploy_bundle(event_loop):
             assert app in model.applications
 
 
+@base.bootstrapped
+@pytest.mark.asyncio
+async def test_deploy_channels_revs(event_loop):
+    async with base.CleanModel() as model:
+        charm = 'cs:~johnsca/libjuju-test'
+        stable = await model.deploy(charm, 'a1')
+        edge = await model.deploy(charm, 'a2', channel='edge')
+        rev = await model.deploy(charm+'-2', 'a3')
+
+        assert [a.charm_url for a in (stable, edge, rev)] == [
+            'cs:~johnsca/libjuju-test-1',
+            'cs:~johnsca/libjuju-test-2',
+            'cs:~johnsca/libjuju-test-2',
+        ]
+
+
 @base.bootstrapped
 @pytest.mark.asyncio
 async def test_add_machine(event_loop):
diff --git a/tox.ini b/tox.ini
index 5b2d82e..5668cdf 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -20,8 +20,8 @@ deps =
 
 [testenv:py35]
 # default tox env excludes integration tests
-commands = py.test -ra -s -x -n auto -k 'not integration' {posargs}
+commands = py.test -ra -v -s -x -n auto -k 'not integration' {posargs}
 
 [testenv:integration]
 basepython=python3
-commands = py.test -ra -s -x -n auto {posargs}
+commands = py.test -ra -v -s -x -n auto {posargs}