1616from .errors import JujuError
1717from .origin import Channel
1818from .url import Schema , URL
19+ from .version import LTS_RELEASES
1920
2021log = logging .getLogger (__name__ )
2122
@@ -230,7 +231,6 @@ async def _resolve_charms(self):
230231 if is_local_charm (spec ['charm' ]):
231232 spec .charm = self .model .applications [name ]
232233 continue
233-
234234 if spec ['charm' ] == app .charm_url :
235235 continue
236236
@@ -239,14 +239,13 @@ async def _resolve_charms(self):
239239 if is_local_charm (spec ['charm' ]):
240240 continue
241241
242+ charm_url = URL .parse (spec ['charm' ])
243+ channel = None
244+ track , risk = '' , ''
245+ if 'channel' in spec :
246+ channel = Channel .parse (spec ['channel' ])
247+ track , risk = channel .track , channel .risk
242248 if self .charms_facade is not None :
243- charm_url = URL .parse (spec ['charm' ])
244- channel = None
245- track , risk = '' , ''
246- if 'channel' in spec :
247- channel = Channel .parse (spec ['channel' ])
248- track , risk = channel .track , channel .risk
249-
250249 if cons is not None and cons ['arch' ] != '' :
251250 architecture = cons ['arch' ]
252251 else :
@@ -259,13 +258,15 @@ async def _resolve_charms(self):
259258 charm_url , charm_origin = await self .model ._resolve_charm (charm_url , origin )
260259
261260 spec ['charm' ] = str (charm_url )
262-
263- if str (channel ) not in self .origins :
264- self .origins [str (charm_url )] = {}
265- self .origins [str (charm_url )][str (channel )] = charm_origin
266261 else :
267- await self .client_facade .ResolveCharms (references = [spec ['charm' ]])
268- # TODO (stickupkid): Ensure that this works as expected.
262+ results = await self .model .charmstore .entity (str (charm_url ))
263+ charm_origin = client .CharmOrigin (source = "charm-store" ,
264+ risk = risk ,
265+ track = track )
266+
267+ if str (channel ) not in self .origins :
268+ self .origins [str (charm_url )] = {}
269+ self .origins [str (charm_url )][str (channel )] = charm_origin
269270
270271 async def execute_plan (self ):
271272 await self ._resolve_charms ()
@@ -471,7 +472,7 @@ async def run(self, context):
471472 resources = {}
472473
473474 channel = None
474- if self .channel is not None :
475+ if self .channel is not None and self . channel != "" :
475476 channel = Channel .parse (self .channel ).normalize ()
476477
477478 origin = context .origins [str (url )][str (channel )]
@@ -575,6 +576,7 @@ async def run(self, context):
575576 log .debug ('Adding %s' , entity_id )
576577 await context .client_facade .AddCharm (channel = None , url = entity_id , force = False )
577578 identifier = entity_id
579+ origin = client .CharmOrigin (source = "charm-store" , risk = "stable" )
578580
579581 elif Schema .CHARM_HUB .matches (url .schema ):
580582 ch = Channel ('latest' , 'stable' )
0 commit comments