in pipe-cli/src/api/pipeline.py [0:0]
def launch_pipeline(cls, pipeline_id, version, parameters,
instance_disk=None, instance_type=None,
docker_image=None, cmd_template=None,
timeout=None, config_name=None, instance_count=None,
price_type=None, region_id=None, parent_node=None, non_pause=None, friendly_url=None,
status_notifications=False,
status_notifications_status=None, status_notifications_recipient=None,
status_notifications_subject=None, status_notifications_body=None,
run_as_user=None):
api = cls.instance()
params = {}
for parameter in parameters:
if parameter.value:
parameter_value = cls.parse_parameter_value(parameter.value)
params[parameter.name] = {'value': parameter_value[0], 'type': parameter_value[1] if parameter_value[2] else parameter.parameter_type}
payload = {'pipelineId': pipeline_id, 'version': version, 'params': params}
if instance_disk is not None:
payload['hddSize'] = instance_disk
if instance_type is not None:
payload['instanceType'] = instance_type
if docker_image is not None:
payload['dockerImage'] = docker_image
if cmd_template is not None:
payload['cmdTemplate'] = cmd_template
if timeout is not None:
payload['timeout'] = timeout
if config_name is not None:
payload['configurationName'] = config_name
if instance_count is not None and instance_count > 0:
payload['nodeCount'] = instance_count
if price_type:
payload['isSpot'] = price_type == PriceType.SPOT
if region_id is not None:
payload['cloudRegionId'] = region_id
if parent_node is not None:
cls.__add_parent_node_params(payload, parent_node)
if non_pause is not None:
payload['nonPause'] = non_pause
if friendly_url:
payload['prettyUrl'] = friendly_url
if run_as_user:
payload['runAs'] = run_as_user
if status_notifications:
if status_notifications_body:
with open(status_notifications_body, 'r') as f:
status_notifications_body_content = f.read()
else:
status_notifications_body_content = None
payload['notifications'] = [{
'type': 'PIPELINE_RUN_STATUS',
'triggerStatuses': status_notifications_status or None,
'recipients': status_notifications_recipient or None,
'subject': status_notifications_subject or None,
'body': status_notifications_body_content or None
}]
data = json.dumps(payload)
response_data = api.call('run', data)
return PipelineRunModel.load(response_data['payload'])