Skip to content

Commit d33a98e

Browse files
juanmanuel-tiradocderici
authored andcommitted
[JUJU-3253] add missing force in bundle deployment (#815)
* Propagate force parameter to resolve function to enable force for remote bundles.
1 parent 4b7c8d0 commit d33a98e

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

juju/model.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ class LocalDeployType:
441441
"""LocalDeployType deals with local only deployments.
442442
"""
443443

444-
async def resolve(self, url, architecture, app_name=None, channel=None, series=None, revision=None, entity_url=None):
444+
async def resolve(self, url, architecture, app_name=None, channel=None, series=None, revision=None, entity_url=None, force=False):
445445
"""resolve attempts to resolve a local charm or bundle using the url
446446
and architecture. If information is missing, it will attempt to backfill
447447
that information, before sending the result back.
@@ -485,7 +485,6 @@ async def resolve(self, url, architecture, app_name=None, channel=None, series=N
485485
is_bundle=is_bundle,
486486
)
487487

488-
489488
class CharmhubDeployType:
490489
"""CharmhubDeployType defines a class for resolving and deploying charmhub
491490
charms and bundles.
@@ -494,7 +493,7 @@ class CharmhubDeployType:
494493
def __init__(self, charm_resolver):
495494
self.charm_resolver = charm_resolver
496495

497-
async def resolve(self, url, architecture, app_name=None, channel=None, series=None, revision=None, entity_url=None):
496+
async def resolve(self, url, architecture, app_name=None, channel=None, series=None, revision=None, entity_url=None, force=False):
498497
"""resolve attempts to resolve charmhub charms or bundles. A request to
499498
the charmhub API is required to correctly determine the charm url and
500499
underlying origin.
@@ -530,7 +529,9 @@ async def resolve(self, url, architecture, app_name=None, channel=None, series=N
530529
app_name = url.name
531530

532531
if series:
533-
if series in supported_series:
532+
# Check whether the charm supports this series
533+
# or we force it
534+
if series in supported_series or force:
534535
origin.series = series
535536
charm_url.series = series
536537
else:
@@ -1687,7 +1688,7 @@ async def deploy(
16871688
if str(url.schema) not in self.deploy_types:
16881689
raise JujuError("unknown deploy type {}, expected charmhub or local".format(url.schema))
16891690

1690-
res = await self.deploy_types[str(url.schema)].resolve(url, architecture, application_name, channel, series, revision, entity_url)
1691+
res = await self.deploy_types[str(url.schema)].resolve(url, architecture, application_name, channel, series, revision, entity_url, force)
16911692

16921693
if res.identifier is None:
16931694
raise JujuError('unknown charm or bundle {}'.format(entity_url))
@@ -1784,6 +1785,7 @@ async def deploy(
17841785
devices=devices,
17851786
charm_origin=charm_origin,
17861787
attach_storage=attach_storage,
1788+
force=force,
17871789
)
17881790

17891791
async def _add_charm(self, charm_url, origin):
@@ -1968,7 +1970,8 @@ async def add_local_resources(self, application, entity_url, metadata, resources
19681970
async def _deploy(self, charm_url, application, series, config,
19691971
constraints, endpoint_bindings, resources, storage,
19701972
channel=None, num_units=None, placement=None,
1971-
devices=None, charm_origin=None, attach_storage=[]):
1973+
devices=None, charm_origin=None, attach_storage=[],
1974+
force=False):
19721975
"""Logic shared between `Model.deploy` and `BundleHandler.deploy`.
19731976
"""
19741977
log.info('Deploying %s', charm_url)
@@ -1996,6 +1999,7 @@ async def _deploy(self, charm_url, application, series, config,
19961999
placement=placement,
19972000
devices=devices,
19982001
attach_storage=attach_storage,
2002+
force=force,
19992003
)
20002004
result = await app_facade.Deploy(applications=[app])
20012005
errors = [r.error.message for r in result.results if r.error]

0 commit comments

Comments
 (0)