def set_deployment_status(clients, status='success', **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient if status == 'success': workflow = 'tripleo.deployment.v1.set_deployment_status_success' elif status == 'failed': workflow = 'tripleo.deployment.v1.set_deployment_status_failed' elif status == 'deploying': workflow = 'tripleo.deployment.v1.set_deployment_status_deploying' else: raise Exception("Can't set unknown deployment status: %s" % status) with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow(workflow_client, workflow, workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution, _WORKFLOW_TIMEOUT): # Just continue until workflow is done continue if payload['status'] != 'SUCCESS': raise exceptions.WorkflowServiceError( 'Exception setting deployment status: {}'.format( payload.get('message', '')))
def create_deployment_plan(clients, **workflow_input): payload = _create_update_deployment_plan( clients, 'tripleo.plan_management.v1.create_deployment_plan', **workflow_input) if payload['status'] != 'SUCCESS': raise exceptions.WorkflowServiceError( 'Exception creating plan: {}'.format(payload['message']))
def delete_deployment_plan(workflow_client, **input_): try: results = base.call_action(workflow_client, 'tripleo.plan.delete', **input_) if results is not None: print(results) except Exception as err: raise exceptions.WorkflowServiceError( 'Exception deleting plan: {}'.format(err))
def list_deployment_plans(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow( workflow_client, 'tripleo.plan_management.v1.list_plans', workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution, _WORKFLOW_TIMEOUT): if payload['status'] != 'SUCCESS': raise exceptions.WorkflowServiceError( 'Exception listing plans: {}'.format(payload['message'])) return payload['plans']
def delete_deployment_plan(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient execution = base.start_workflow( workflow_client, 'tripleo.plan_management.v1.delete_deployment_plan', workflow_input=workflow_input) with tripleoclients.messaging_websocket() as ws: for payload in base.wait_for_messages(workflow_client, ws, execution, _WORKFLOW_TIMEOUT): if 'message' in payload: print(payload['message']) if payload['status'] != 'SUCCESS': raise exceptions.WorkflowServiceError( 'Exception deleting plan: {}'.format(payload['message']))
def create_default_plan(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient queue_name = workflow_input['queue_name'] execution = base.start_workflow( workflow_client, 'tripleo.plan_management.v1.create_default_deployment_plan', workflow_input=workflow_input) with tripleoclients.messaging_websocket(queue_name) as ws: payload = ws.wait_for_message(execution.id) if payload['status'] == 'SUCCESS': print("Default plan created") else: raise exceptions.WorkflowServiceError( 'Exception creating plan: {}'.format(payload['message']))
def create_overcloudrc(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient execution = base.start_workflow(workflow_client, 'tripleo.deployment.v1.create_overcloudrc', workflow_input=workflow_input) with tripleoclients.messaging_websocket() as ws: for payload in base.wait_for_messages(workflow_client, ws, execution): # the workflow will return the overcloudrc data, an error message # or blank. if payload.get('status') == 'SUCCESS': return payload.get('message') else: raise exceptions.WorkflowServiceError( 'Exception creating overcloudrc: {}'.format( payload.get('message')))
def generate_fencing_parameters(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow( workflow_client, 'tripleo.parameters.v1.generate_fencing_parameters', workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution, 600): if payload['status'] != 'SUCCESS': raise exceptions.WorkflowServiceError( 'Exception generating fencing parameters: {}'.format( payload['message'])) if ('fencing_parameters' in payload and (payload.get('status', 'FAILED') == "SUCCESS")): return payload['fencing_parameters']
def export_deployment_plan(clients, plan_name): export_container = "plan-exports" delete_after = 3600 mistral_context = clients.tripleoclient.create_mistral_context() action = plan.ExportPlanAction(plan_name, delete_after=delete_after, exports_container=export_container) result = action.run(mistral_context) if result: raise exceptions.WorkflowServiceError( 'Exception exporting plan: {}'.format(result.error)) url = swiftutils.get_temp_url(clients.tripleoclient.object_store, container=export_container, object_name="{}.tar.gz".format(plan_name)) print(url) return url
def list_available_roles(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient available_roles = [] with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow( workflow_client, 'tripleo.plan_management.v1.list_available_roles', workflow_input=workflow_input ) for payload in base.wait_for_messages(workflow_client, ws, execution): if payload['status'] == 'SUCCESS': available_roles = payload['available_roles'] else: raise exceptions.WorkflowServiceError( 'Error retrieving available roles: {}'.format( payload.get('message'))) return available_roles
def get_deployment_failures(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient execution = base.start_workflow( workflow_client, 'tripleo.deployment.v1.get_deployment_failures', workflow_input=workflow_input) with tripleoclients.messaging_websocket() as ws: for payload in base.wait_for_messages(workflow_client, ws, execution, _WORKFLOW_TIMEOUT): if 'message' in payload: print(payload['message']) if payload['status'] == 'SUCCESS': return payload['deployment_failures']['failures'] else: raise exceptions.WorkflowServiceError( 'Exception getting deployment failures: {}'.format( payload.get('message', '')))
def config_download_export(clients, **workflow_input): workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow( workflow_client, 'tripleo.deployment.v1.config_download_export', workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution, _WORKFLOW_TIMEOUT): message = payload.get('message') if message: print(message) if payload['status'] == 'SUCCESS': return payload['tempurl'] else: raise exceptions.WorkflowServiceError( 'Exception exporting config-download: {}'.format( payload['message']))