Skip to content

Commit 95e54de

Browse files
authored
RD-2165 Install into deployment group (#1293)
1 parent 24886da commit 95e54de

File tree

3 files changed

+70
-23
lines changed

3 files changed

+70
-23
lines changed

cloudify_cli/cli/cfy.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,6 +1718,11 @@ def __init__(self):
17181718
mutually_exclusive=['count'],
17191719
)
17201720

1721+
self.deployment_group_id = click.option(
1722+
'-g', '--deployment-group-id',
1723+
help=helptexts.DEP_GROUP_ID,
1724+
)
1725+
17211726
self.group_id_filter = click.option(
17221727
'--group-id',
17231728
help=helptexts.GROUP_ID_FILTER,

cloudify_cli/cli/helptexts.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@
532532

533533
FILTER_ID = 'Filter results according to the specified filter'
534534

535+
DEP_GROUP_ID = 'Deployment group id (a name).'
535536
DEP_GROUP_BLUEPRINT = 'Default blueprint for this deployment group'
536537
DEP_GROUP_DESCRIPTION = 'Description of this deployment group'
537538
DEP_GROUP_DEP_ID = 'Deployment ID to add or remove from the group'

cloudify_cli/commands/install.py

Lines changed: 64 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from ..cli import cfy, helptexts
2121
from ..constants import DEFAULT_INSTALL_WORKFLOW
2222
from ..blueprint import get_blueprint_path_and_id
23+
from ..exceptions import CloudifyCliError
2324
from . import init, executions, blueprints, deployments
2425

2526

@@ -30,6 +31,8 @@
3031
@cfy.options.blueprint_filename()
3132
@cfy.options.validate
3233
@cfy.options.deployment_id(validate=True)
34+
@cfy.options.deployment_group_id
35+
@cfy.options.group_count
3336
@cfy.options.inputs
3437
@cfy.options.workflow_id('install')
3538
@cfy.options.force(help=helptexts.FORCE_CONCURRENT_EXECUTION)
@@ -52,6 +55,8 @@ def manager(ctx,
5255
blueprint_filename,
5356
validate,
5457
deployment_id,
58+
deployment_group_id,
59+
count,
5560
inputs,
5661
workflow_id,
5762
force,
@@ -81,7 +86,21 @@ def manager(ctx,
8186
blueprint_filename,
8287
blueprint_id
8388
)
84-
deployment_id = deployment_id or blueprint_id
89+
if count is not None:
90+
if int(count) > 0:
91+
deployment_group_id = deployment_group_id or blueprint_id
92+
else:
93+
raise CloudifyCliError('Count must be a positive number.')
94+
else:
95+
deployment_id = deployment_id or blueprint_id
96+
97+
if (deployment_group_id is None) != (count is None):
98+
raise CloudifyCliError('Both parameters must be provided: '
99+
'deployment_group_id and count.')
100+
if (deployment_group_id is None) == (deployment_id is None):
101+
raise CloudifyCliError('One of the parameters must be provided: '
102+
'deployment_group_id and deployment_id.')
103+
85104
workflow_id = workflow_id or DEFAULT_INSTALL_WORKFLOW
86105

87106
try:
@@ -102,28 +121,50 @@ def manager(ctx,
102121
if processed_blueprint_path != blueprint_path:
103122
shutil.rmtree(os.path.dirname(os.path.dirname(
104123
processed_blueprint_path)))
105-
ctx.invoke(
106-
deployments.manager_create,
107-
blueprint_id=blueprint_id,
108-
deployment_id=deployment_id,
109-
inputs=inputs,
110-
visibility=visibility,
111-
tenant_name=tenant_name,
112-
skip_plugins_validation=skip_plugins_validation,
113-
labels=deployment_labels
114-
)
115-
ctx.invoke(
116-
executions.manager_start,
117-
workflow_id=workflow_id,
118-
deployment_id=deployment_id,
119-
timeout=timeout,
120-
force=force,
121-
allow_custom_parameters=allow_custom_parameters,
122-
include_logs=include_logs,
123-
parameters=parameters,
124-
json_output=json_output,
125-
tenant_name=tenant_name
126-
)
124+
if deployment_id:
125+
ctx.invoke(
126+
deployments.manager_create,
127+
blueprint_id=blueprint_id,
128+
deployment_id=deployment_id,
129+
inputs=inputs,
130+
visibility=visibility,
131+
tenant_name=tenant_name,
132+
skip_plugins_validation=skip_plugins_validation,
133+
labels=deployment_labels
134+
)
135+
ctx.invoke(
136+
executions.manager_start,
137+
workflow_id=workflow_id,
138+
deployment_id=deployment_id,
139+
timeout=timeout,
140+
force=force,
141+
allow_custom_parameters=allow_custom_parameters,
142+
include_logs=include_logs,
143+
parameters=parameters,
144+
json_output=json_output,
145+
tenant_name=tenant_name
146+
)
147+
else:
148+
ctx.invoke(
149+
deployments.groups_create,
150+
deployment_group_name=deployment_group_id,
151+
inputs=inputs,
152+
default_blueprint=blueprint_id,
153+
)
154+
ctx.invoke(
155+
deployments.groups_extend,
156+
deployment_group_name=deployment_group_id,
157+
count=count,
158+
)
159+
ctx.invoke(
160+
executions.execution_groups_start,
161+
deployment_group=deployment_group_id,
162+
workflow_id=workflow_id,
163+
parameters=parameters,
164+
json_output=json_output,
165+
force=force,
166+
timeout=timeout
167+
)
127168

128169

129170
@cfy.command(name='install',

0 commit comments

Comments
 (0)