1717from . import utils , jasyncio
1818from .origin import Channel , Source
1919from .url import Schema , URL
20+ from .utils import get_base_from_origin_or_channel
2021
2122log = logging .getLogger (__name__ )
2223
@@ -349,12 +350,11 @@ async def _resolve_charms(self):
349350 continue
350351
351352 charm_url = URL .parse (spec ['charm' ])
352- channel = None
353- series = spec .get ('series' , None )
354- track , risk = '' , ''
355- if 'channel' in spec :
356- channel = Channel .parse (spec ['channel' ])
357- track , risk = channel .track , channel .risk
353+
354+ channel = Channel .parse (spec ['channel' ]) if 'channel' in spec else Channel ('latest' , 'stable' )
355+ track , risk = channel .track , channel .risk
356+ series = spec .get ('series' , self .bundle .get ('series' , None ))
357+ base = get_base_from_origin_or_channel (channel , series )
358358
359359 if self .charms_facade is not None :
360360 if cons is not None and cons ['arch' ] != '' :
@@ -365,16 +365,18 @@ async def _resolve_charms(self):
365365 origin = client .CharmOrigin (source = Source .CHARM_HUB .value ,
366366 architecture = architecture ,
367367 risk = risk ,
368- track = track )
369- if not self . model . connection (). is_using_old_client and series :
370- origin . base = client . Base (
371- channel = utils . get_series_version ( series ), name = 'ubuntu' )
372- charm_url , charm_origin , _ = await self .model ._resolve_charm (charm_url , origin )
368+ track = track ,
369+ base = base ,
370+ )
371+
372+ charm_url , charm_origin = await self .model ._resolve_charm (charm_url , origin )
373373 spec ['charm' ] = str (charm_url )
374374 else :
375375 charm_origin = client .CharmOrigin (source = Source .CHARM_HUB .value ,
376376 risk = risk ,
377- track = track )
377+ track = track ,
378+ base = base ,
379+ )
378380
379381 if str (channel ) not in self .origins :
380382 self .origins [str (charm_url )] = {}
@@ -715,15 +717,13 @@ async def run(self, context):
715717 arch = self .architecture
716718 if not arch :
717719 arch = await context .model ._resolve_architecture (url )
720+ base = get_base_from_origin_or_channel (ch , self .series )
718721 origin = client .CharmOrigin (source = Source .CHARM_HUB .value ,
719722 architecture = arch ,
720723 risk = ch .risk ,
721- track = ch .track )
722- if not context .model .connection ().is_using_old_client and self .series :
723- origin .base = client .Base (
724- channel = utils .get_series_version (self .series ),
725- name = 'ubuntu' )
726- identifier , origin , _ = await context .model ._resolve_charm (url , origin )
724+ track = ch .track ,
725+ base = base )
726+ identifier , origin = await context .model ._resolve_charm (url , origin )
727727
728728 if identifier is None :
729729 raise JujuError ('unknown charm {}' .format (self .charm ))
0 commit comments