summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--morphlib/plugins/deploy_plugin.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/morphlib/plugins/deploy_plugin.py b/morphlib/plugins/deploy_plugin.py
index 1d582949..2e7cdaf7 100644
--- a/morphlib/plugins/deploy_plugin.py
+++ b/morphlib/plugins/deploy_plugin.py
@@ -35,10 +35,16 @@ class DeployPlugin(cliapp.Plugin):
'existing cluster of systems rather than do '
'an initial deployment',
group=group_deploy)
+ self.app.settings.string_list(['param'],
+ 'pass a variable of the form '
+ '"SYSTEM.KEY=VALUE" to override the '
+ 'corresponding parameter in the '
+ 'morphology',
+ group=group_deploy)
self.app.add_subcommand(
'deploy', self.deploy,
- arg_synopsis='CLUSTER [SYSTEM.KEY=VALUE]')
+ arg_synopsis='CLUSTER [DEPLOYMENT...]')
def disable(self):
pass
@@ -275,7 +281,8 @@ class DeployPlugin(cliapp.Plugin):
'/', 0)
cluster_name = morphlib.util.strip_morph_extension(args[0])
- env_vars = args[1:]
+ deployments = set(args[1:])
+ env_vars = self.app.settings['param']
ws = morphlib.workspace.open('.')
sb = morphlib.sysbranchdir.open_from_within('.')
@@ -335,7 +342,7 @@ class DeployPlugin(cliapp.Plugin):
self.deploy_system(build_command, deploy_tempdir,
root_repo_dir, bb.root_repo_url,
bb.root_ref, system, env_vars,
- parent_location='')
+ deployments, parent_location='')
finally:
shutil.rmtree(deploy_tempdir)
@@ -343,7 +350,10 @@ class DeployPlugin(cliapp.Plugin):
def deploy_system(self, build_command, deploy_tempdir,
root_repo_dir, build_repo, ref, system, env_vars,
- parent_location):
+ deployments, parent_location):
+ sys_ids = [sys_id for sys_id, _ in system['deploy'].iteritems()]
+ if not set.intersection(set(sys_ids), deployments) and deployments:
+ return
old_status_prefix = self.app.status_prefix
system_status_prefix = '%s[%s]' % (old_status_prefix, system['morph'])
self.app.status_prefix = system_status_prefix
@@ -356,8 +366,9 @@ class DeployPlugin(cliapp.Plugin):
artifact = build_command.resolve_artifacts(srcpool)
deploy_defaults = system.get('deploy-defaults', {})
- deployments = system['deploy']
- for system_id, deploy_params in deployments.iteritems():
+ for system_id, deploy_params in system['deploy'].iteritems():
+ if not system_id in deployments and deployments:
+ continue
deployment_status_prefix = '%s[%s]' % (
system_status_prefix, system_id)
self.app.status_prefix = deployment_status_prefix
@@ -399,6 +410,7 @@ class DeployPlugin(cliapp.Plugin):
self.deploy_system(build_command, deploy_tempdir,
root_repo_dir, build_repo,
ref, subsystem, env_vars,
+ deployments,
parent_location=system_tree)
if parent_location:
deploy_location = os.path.join(parent_location,