@@ -736,6 +736,25 @@ async def refresh(
736736 err = charm_origin_result .error
737737 raise JujuError (f'{ err .code } : { err .message } ' )
738738
739+ < << << << HEAD
740+ == == == =
741+ # Now take care of the resources:
742+
743+ # user supplied resources to be used in refresh,
744+ # will override the default values if there's any
745+ arg_resources = resources or {}
746+
747+ # need to process the given resources, as they can be
748+ # paths or revisions
749+ _arg_res_filenames = {}
750+ _arg_res_revisions = {}
751+ for res , filename_or_rev in arg_resources .items ():
752+ if isinstance (filename_or_rev , int ):
753+ _arg_res_revisions [res ] = filename_or_rev
754+ else :
755+ _arg_res_filenames [res ] = filename_or_rev
756+
757+ > >> >> >> 5 fbf5bc (Avoid trying to pass revision unless provided by user in app refresh )
739758 # Already prepped the charm_resources
740759 # Now get the existing resources from the ResourcesFacade
741760 request_data = [client .Entity (self .tag )]
@@ -749,23 +768,27 @@ async def refresh(
749768 # Compute the difference btw resources needed and the existing resources
750769 resources_to_update = []
751770 for resource in charm_resources :
752- if utils .should_upgrade_resource (resource , existing_resources ):
771+ if utils .should_upgrade_resource (resource , existing_resources , arg_resources ):
753772 resources_to_update .append (resource )
754773
755774 # Update the resources
756775 if resources_to_update :
757776 request_data = []
758777 for resource in resources_to_update :
778+ res_name = resource .get ('Name' , resource .get ('name' ))
759779 request_data .append (client .CharmResource (
760780 description = resource .get ('Description' , resource .get ('description' )),
761- fingerprint = resource .get ('Fingerprint' , resource .get ('fingerprint' )),
762- name = resource .get ('Name' , resource .get ('name' )),
763- path = resource .get ('Path' , resource .get ('filename' )),
764- revision = resource .get ('Revision' , resource .get ('revision' , - 1 )),
765- size = resource .get ('Size' , resource .get ('size' )),
781+ fingerprint = resource .get ('Fingerprint' , resource .get ('fingerprint' , [])),
782+ name = res_name ,
783+ path = _arg_res_filenames .get (res_name ,
784+ resource .get ('Path' ,
785+ resource .get ('filename' , '' ))),
786+ revision = _arg_res_revisions .get (res_name , - 1 ),
787+ size = resource .get ('Size' , resource .get ('size' , 0 )),
766788 type_ = resource .get ('Type' , resource .get ('type' )),
767789 origin = 'store' ,
768790 ))
791+
769792 response = await resources_facade .AddPendingResources (
770793 application_tag = self .tag ,
771794 charm_url = charm_url ,
0 commit comments