Skip to content

Commit f519a66

Browse files
committed
Refactor and cleanup code & test for application.refresh
1 parent 6f56991 commit f519a66

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
@@ -660,12 +660,13 @@ async def refresh(
660660
charmhub = self.model.charmhub
661661
charm_resources = await charmhub.list_resources(charm_name)
662662

663-
res = await app_facade.GetCharmURLOrigin(application=charm_name)
663+
charm_url_origin_result = await app_facade.GetCharmURLOrigin(application=charm_name)
664664

665-
if res.error is not None:
666-
raise JujuError(f'{res.code} : {res.message}')
667-
charm_url = res.url
668-
origin = res.charm_origin
665+
if charm_url_origin_result.error is not None:
666+
err = charm_url_origin_result.error
667+
raise JujuError(f'{err.code} : {err.message}')
668+
charm_url = charm_url_origin_result.url
669+
origin = charm_url_origin_result.charm_origin
669670

670671
if channel:
671672
ch = Channel.parse(channel).normalize()
@@ -681,14 +682,11 @@ async def refresh(
681682
resolved_charm = resolved_charm_with_channel_results.results[0]
682683

683684
if resolved_charm.error is not None:
684-
raise JujuError(f'{res.code} : {res.message}')
685+
err = resolved_charm.error
686+
raise JujuError(f'{err.code} : {err.message}')
685687
dest_origin = resolved_charm.charm_origin
686688
charm_url = resolved_charm.url
687689

688-
await charms_facade.AddCharm(url=charm_url,
689-
force=force,
690-
charm_origin=dest_origin)
691-
692690
else:
693691
charms_facade = client.CharmsFacade.from_connection(self.connection)
694692
charmstore = self.model.charmstore
@@ -710,14 +708,19 @@ async def refresh(
710708
raise JujuError('already running charm "%s"' % charm_url)
711709

712710
dest_origin = client.CharmOrigin(source="charm-store", risk=channel)
713-
# Update charm
714-
await charms_facade.AddCharm(url=charm_url,
715-
force=force,
716-
charm_origin=dest_origin)
711+
717712
if not charmstore_entity:
718713
charmstore_entity = await charmstore.entity(charm_url, channel=channel)
719714
charm_resources = charmstore_entity['Meta']['resources']
720715

716+
# Add the charm with the new origin
717+
charm_origin_result = await charms_facade.AddCharm(url=charm_url,
718+
force=force,
719+
charm_origin=dest_origin)
720+
if charm_origin_result.error is not None:
721+
err = charm_origin_result.error
722+
raise JujuError(f'{err.code} : {err.message}')
723+
721724
# Update resources
722725
request_data = [client.Entity(self.tag)]
723726
response = await resources_facade.ListResources(entities=request_data)
@@ -740,7 +743,6 @@ async def refresh(
740743
fingerprint=resource.get('Fingerprint', resource.get('fingerprint')),
741744
name=resource.get('Name', resource.get('name')),
742745
path=resource.get('Path', resource.get('filename')),
743-
# revision=-1,
744746
revision=resource.get('Revision', resource.get('revision', -1)),
745747
size=resource.get('Size', resource.get('size')),
746748
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
@@ -176,10 +176,11 @@ async def test_upgrade_charm_channel(event_loop):
176176
async def test_upgrade_charm_switch_channel(event_loop):
177177
# Note for future:
178178
# This test requires a charm that has different
179-
# revisions in channels 'stable' and 'candidate'.
180-
# Currently, we use mongodb, but eventually
181-
# (when the 'candidate' moves to 'stable') this test
179+
# revisions for different channels/risks.
180+
# Currently, we use juju-qa-test, but eventually
181+
# (when the 'edge' moves to 'stable') this test
182182
# will be testing nothing (if not failing).
183+
# So checks are in place for that.
183184

184185
async with base.CleanModel() as model:
185186
app = await model.deploy('juju-qa-test', channel='2.0/stable')
@@ -189,7 +190,7 @@ async def test_upgrade_charm_switch_channel(event_loop):
189190
assert Schema.CHARM_HUB.matches(charm_url.schema)
190191
still22 = False
191192
try:
192-
assert charm_url.revision == 76
193+
assert charm_url.revision == 22
193194
still22 = True
194195
except AssertionError:
195196
logger.warning("Charm used in test_upgrade_charm_switch_channel "
@@ -200,6 +201,7 @@ async def test_upgrade_charm_switch_channel(event_loop):
200201

201202
if still22:
202203
try:
204+
charm_url = URL.parse(app.data['charm-url'])
203205
assert charm_url.revision == 23
204206
except AssertionError:
205207
raise errors.JujuError("Either the upgrade has failed, or the used charm moved "

0 commit comments

Comments
 (0)