Skip to content

Commit a7250b2

Browse files
committed
Refactor and cleanup code & test for application.refresh
1 parent e940db0 commit a7250b2

2 files changed

Lines changed: 23 additions & 19 deletions

File tree

juju/application.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -664,12 +664,13 @@ async def refresh(
664664
charmhub = self.model.charmhub
665665
charm_resources = await charmhub.list_resources(charm_name)
666666

667-
res = await app_facade.GetCharmURLOrigin(application=charm_name)
667+
charm_url_origin_result = await app_facade.GetCharmURLOrigin(application=charm_name)
668668

669-
if res.error is not None:
670-
raise JujuError(f'{res.code} : {res.message}')
671-
charm_url = res.url
672-
origin = res.charm_origin
669+
if charm_url_origin_result.error is not None:
670+
err = charm_url_origin_result.error
671+
raise JujuError(f'{err.code} : {err.message}')
672+
charm_url = charm_url_origin_result.url
673+
origin = charm_url_origin_result.charm_origin
673674

674675
if channel:
675676
ch = Channel.parse(channel).normalize()
@@ -685,14 +686,11 @@ async def refresh(
685686
resolved_charm = resolved_charm_with_channel_results.results[0]
686687

687688
if resolved_charm.error is not None:
688-
raise JujuError(f'{res.code} : {res.message}')
689+
err = resolved_charm.error
690+
raise JujuError(f'{err.code} : {err.message}')
689691
dest_origin = resolved_charm.charm_origin
690692
charm_url = resolved_charm.url
691693

692-
await charms_facade.AddCharm(url=charm_url,
693-
force=force,
694-
charm_origin=dest_origin)
695-
696694
else:
697695
charms_facade = client.CharmsFacade.from_connection(self.connection)
698696
charmstore = self.model.charmstore
@@ -714,14 +712,19 @@ async def refresh(
714712
raise JujuError('already running charm "%s"' % charm_url)
715713

716714
dest_origin = client.CharmOrigin(source="charm-store", risk=channel)
717-
# Update charm
718-
await charms_facade.AddCharm(url=charm_url,
719-
force=force,
720-
charm_origin=dest_origin)
715+
721716
if not charmstore_entity:
722717
charmstore_entity = await charmstore.entity(charm_url, channel=channel)
723718
charm_resources = charmstore_entity['Meta']['resources']
724719

720+
# Add the charm with the new origin
721+
charm_origin_result = await charms_facade.AddCharm(url=charm_url,
722+
force=force,
723+
charm_origin=dest_origin)
724+
if charm_origin_result.error is not None:
725+
err = charm_origin_result.error
726+
raise JujuError(f'{err.code} : {err.message}')
727+
725728
# Update resources
726729
request_data = [client.Entity(self.tag)]
727730
response = await resources_facade.ListResources(entities=request_data)
@@ -744,7 +747,6 @@ async def refresh(
744747
fingerprint=resource.get('Fingerprint', resource.get('fingerprint')),
745748
name=resource.get('Name', resource.get('name')),
746749
path=resource.get('Path', resource.get('filename')),
747-
# revision=-1,
748750
revision=resource.get('Revision', resource.get('revision', -1)),
749751
size=resource.get('Size', resource.get('size')),
750752
type_=resource.get('Type', resource.get('type')),

tests/integration/test_application.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,11 @@ async def test_upgrade_charm_channel(event_loop):
174174
async def test_upgrade_charm_switch_channel(event_loop):
175175
# Note for future:
176176
# This test requires a charm that has different
177-
# revisions in channels 'stable' and 'candidate'.
178-
# Currently, we use mongodb, but eventually
179-
# (when the 'candidate' moves to 'stable') this test
177+
# revisions for different channels/risks.
178+
# Currently, we use juju-qa-test, but eventually
179+
# (when the 'edge' moves to 'stable') this test
180180
# will be testing nothing (if not failing).
181+
# So checks are in place for that.
181182

182183
async with base.CleanModel() as model:
183184
app = await model.deploy('juju-qa-test', channel='2.0/stable')
@@ -187,7 +188,7 @@ async def test_upgrade_charm_switch_channel(event_loop):
187188
assert Schema.CHARM_HUB.matches(charm_url.schema)
188189
still22 = False
189190
try:
190-
assert charm_url.revision == 76
191+
assert charm_url.revision == 22
191192
still22 = True
192193
except AssertionError:
193194
logger.warning("Charm used in test_upgrade_charm_switch_channel "
@@ -198,6 +199,7 @@ async def test_upgrade_charm_switch_channel(event_loop):
198199

199200
if still22:
200201
try:
202+
charm_url = URL.parse(app.data['charm-url'])
201203
assert charm_url.revision == 23
202204
except AssertionError:
203205
raise errors.JujuError("Either the upgrade has failed, or the used charm moved "

0 commit comments

Comments
 (0)