Ejemplo n.º 1
0
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']))
Ejemplo n.º 3
0
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']))
Ejemplo n.º 7
0
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')))
Ejemplo n.º 8
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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', '')))
Ejemplo n.º 12
0
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']))