Example #1
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        host=dict(required=True),
        port=dict(type='int', default=None),
        protocol=dict(default='https', choices=['http', 'https']),
        username=dict(required=True),
        password=dict(required=True, no_log=True),
    )
    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False, ansible_facts={})

    module.client = connect(module)

    facts = result["ansible_facts"]
    facts["configlets"] = get_configlets(module)
    facts["devices"] = get_devices(module)
    facts["images"] = get_images(module)
    facts["containers"] = get_containers(module)
    facts["tasks"] = get_tasks(module)

    module.exit_json(**result)
Example #2
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(devices=dict(type='dict', required=True),
                         cvp_facts=dict(type='dict', required=True),
                         device_filter=dict(type='list', default='none'),
                         state=dict(type='str',
                                    choices=['present', 'absent'],
                                    default='present',
                                    required=False))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)
    result = dict(changed=False, data={})
    messages = dict(issues=False)
    # Connect to CVP instance
    module.client = connect(module)

    # if 'state' not in module.params:
    #     module.params['state']=present

    if module.params['state'] == 'present':
        # Configure devices on CVP
        # Pass module params to configlet_action to act on configlet
        result['changed'], result['data'] = device_action(module)
    elif module.params['state'] == 'absent':
        # Reset devices when user configured state=absent
        result['changed'] = True
        result['data'] = devices_reset(module)

    module.exit_json(**result)
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        host=dict(required=True),
        port=dict(type='list', default=None),
        protocol=dict(default='https', choices=['http', 'https']),
        username=dict(required=True),
        password=dict(required=True),
        container=dict(required=True),
        parent=dict(default='Tenant'),
    )

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    module.client = connect(module)
    container = module.params['container']
    parent = module.params['parent']

    try:
        changed = process_container(module, container, parent)
        if changed:
            result['changed'] = True
    except CvpApiError, e:
        module.fail_json(msg=str(e))
Example #4
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(host=dict(required=True),
                         port=dict(required=False, default=None),
                         protocol=dict(default='https',
                                       choices=['http', 'https']),
                         username=dict(required=True),
                         password=dict(required=True, no_log=True),
                         server_name=dict(required=True),
                         switch_name=dict(required=True),
                         switch_port=dict(required=True),
                         port_vlan=dict(required=False, default=None),
                         template=dict(require=True),
                         action=dict(default='show',
                                     choices=['show', 'add', 'remove']),
                         auto_run=dict(type='bool', default=False))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)
    result = dict(changed=False)
    module.client = connect(module)

    try:
        result['switchInfo'] = switch_info(module)
        if module.params['action'] in ['add', 'remove']:
            switch_in_compliance(module, result['switchInfo'])
        switch_configlet = server_configurable_configlet(
            module, result['switchInfo'])
        if not switch_configlet:
            module.fail_json(msg=str('Switch %s has no configurable server'
                                     ' ports.' % module.params['switch_name']))
        result['switchConfigurable'] = True
        if not port_configurable(module, switch_configlet):
            module.fail_json(msg=str('Port %s is not configurable as a server'
                                     ' port on switch %s.' %
                                     (module.params['switch_port'],
                                      module.params['switch_name'])))
        result['portConfigurable'] = True
        result['taskCreated'] = False
        result['taskExecuted'] = False
        result['taskCompleted'] = False
        result.update(configlet_action(module, switch_configlet))
        if module.params['auto_run'] and module.params['action'] != 'show':
            task_id = configlet_update_task(module)
            if task_id:
                result['taskId'] = task_id
                note = (
                    'Update config on %s with %s action from Ansible.' %
                    (module.params['switch_name'], module.params['action']))
                module.client.api.add_note_to_task(task_id, note)
                module.client.api.execute_task(task_id)
                result['taskExecuted'] = True
                task_completed = wait_for_task_completion(module, task_id)
                if task_completed:
                    result['taskCompleted'] = True
            else:
                result['taskCreated'] = False
    except CvpApiError, e:
        module.fail_json(msg=str(e))
def main():
    """
    main entry point for module execution.
    """
    argument_spec = dict(configlets=dict(type='dict', required=True),
                         configlets_notes=dict(type='str',
                                               default='Managed by Ansible',
                                               required=False),
                         cvp_facts=dict(type='dict', required=True),
                         configlet_filter=dict(type='list', default='none'),
                         state=dict(type='str',
                                    choices=['present', 'absent'],
                                    default='present',
                                    required=False))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    if not HAS_DIFFLIB:
        module.fail_json(msg='difflib required for this module')

    result = dict(changed=False, data={})
    # messages = dict(issues=False)
    # Connect to CVP instance
    module.client = connect(module)

    # Pass module params to configlet_action to act on configlet
    result = action_manager(module)

    MODULE_LOGGER.info('result of cv_configlet is: %s', str(result))

    module.exit_json(**result)
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(host=dict(required=True),
                         port=dict(type='int', default=None),
                         protocol=dict(default='https',
                                       choices=['http', 'https']),
                         username=dict(required=True),
                         password=dict(required=True, no_log=True),
                         device=dict(required=True),
                         container=dict(default='None'),
                         configlet=dict(type='list', default='None'),
                         action=dict(default='show',
                                     choices=['add', 'delete', 'show']))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    module.client = connect(module)

    try:
        changed = process_device(module)
    except CvpApiError, e:
        module.fail_json(msg=str(e))
Example #7
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(configlets=dict(type='dict', required=True),
                         cvp_facts=dict(type='dict', required=True),
                         configlet_filter=dict(type='list', default='none'),
                         state=dict(type='str',
                                    choices=['present', 'absent'],
                                    default='present',
                                    required=False))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    if not HAS_DIFFLIB:
        module.fail_json(msg='difflib required for this module')

    result = dict(changed=False, data={})
    messages = dict(issues=False)
    # Connect to CVP instance
    module.client = connect(module)

    # Pass module params to configlet_action to act on configlet
    result['changed'], result['data'], diff = configlet_action(module)
    if len(diff) > 0:
        result['diff'] = {'prepared': diff}
    module.exit_json(**result)
Example #8
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(host=dict(required=True),
                         port=dict(type='int', default=None),
                         protocol=dict(default='https',
                                       choices=['http', 'https']),
                         username=dict(required=True),
                         password=dict(required=True, no_log=True),
                         container=dict(required=True),
                         parent=dict(default='Tenant'),
                         action=dict(default='add',
                                     choices=['add', 'delete', 'show']))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    module.client = connect(module)
    container = module.params['container']
    parent = module.params['parent']
    action = module.params['action']

    try:
        changed = process_container(module, container, parent, action)
        if changed[0]:
            result['changed'] = True
            result['taskIDs'] = changed[1]
        else:
            result['data'] = changed[1]
    except CvpApiError, e:
        module.fail_json(msg=str(e))
Example #9
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(host=dict(required=True),
                         port=dict(type='int', default=None),
                         protocol=dict(default='https',
                                       choices=['http', 'https']),
                         username=dict(required=True),
                         password=dict(required=True, no_log=True),
                         container=dict(default='None'),
                         device=dict(default='None'),
                         parent=dict(default='Tenant'),
                         configletName=dict(default='None'),
                         configletConfig=dict(default='None'),
                         template=dict(default='None'),
                         data=dict(default='None'),
                         action=dict(default='show',
                                     choices=['show', 'add', 'delete']))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)
    result = dict(changed=False)
    messages = dict(issues=False)
    module.client = connect(module)
    # Before Starting check for existing tasks

    # Pass config and module params to configlet_action to act on configlet
    result['changed'], result['configlet_data'] = configlet_action(module)

    # Check if the configlet is applied to a device or container
    # Device will take priority of Container
    configlet_type = "None"
    if module.params['device'] != "None":
        device_data = device_info(module)
        if 'warning' not in device_data:
            configletList = []
            for configlet in device_data['configlets']:
                configletList.append(configlet['name'])
            for configlet in device_data['configlets']:
                # Check if Configlet is applied to Device
                if configlet['name'] == result['configlet_data'][
                        'configletName']:
                    configlet_type = "device"
    if module.params['container'] != "None" and module.params[
            'device'] == "None":
        container_data = container_info(module)
        if 'warning' not in container_data:
            configletList = []
            for configlet in container_data['configlets']['configletList']:
                configletList.append(configlet['name'])
            for configlet in container_data['configlets']['configletList']:
                # Check if Configlet is applied to Container
                if configlet['name'] == result['configlet_data'][
                        'configletName']:
                    configlet_type = "container"
    result['configlet_data']['configletType'] = configlet_type

    module.exit_json(**result)
Example #10
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict()
    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    result = dict(changed=False, ansible_facts={})

    module.client = connect(module)

    result['ansible_facts'] = cv_facts(module)
    result['changed'] = False

    module.exit_json(**result)
Example #11
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(devices=dict(type='dict', required=True),
                         cvp_facts=dict(type='dict', required=True),
                         device_filter=dict(type='list', default='none'))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)
    result = dict(changed=False, data={})
    messages = dict(issues=False)
    # Connect to CVP instance
    module.client = connect(module)

    # Pass module params to configlet_action to act on configlet
    result['changed'], result['data'] = device_action(module)
    module.exit_json(**result)
Example #12
0
def main():
    """
    main entry point for module execution.
    """
    debug_module = False
    if debug_module:
        logging.basicConfig(format='%(asctime)s %(message)s',
                            filename='cv_fact_v2.log', level=logging.DEBUG)

    argument_spec = dict(
        gather_subset=dict(type='list',
                           elements='str',
                           required=False,
                           choices=['default',
                                    'config',
                                    'tasks_pending',
                                    'tasks_all',
                                    'tasks_failed'],
                           default='default'),
        facts=dict(type='list',
                   elements='str',
                   required=False,
                   choices=['all',
                            'configlets',
                            'containers',
                            'devices',
                            'tasks'],
                   default='all'))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    # Forge standard Ansible output
    result = dict(changed=False, ansible_facts={})

    # Connect to CVP Instance
    module.client = connect(module, debug=debug_module)

    # Get Facts from CVP
    result['ansible_facts'] = facts_builder(module, debug=debug_module)

    # Standard Ansible outputs
    module.exit_json(**result)
Example #13
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        image=dict(default='None'),
        container=dict(default='None'),
        device=dict(default='None'),
        action=dict(default='show', choices=['add','delete','show'])
    )

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    module.client = connect(module)

    try:
        changed = image_action(module)
    except CvpApiError, e:
        module.fail_json(msg=str(e))
Example #14
0
def main():
    """
    Module entry point.
    """
    argument_spec = dict(
        devices=dict(type="dict", required=True),
        cvp_facts=dict(type="dict", required=True),
        device_filter=dict(type="list", default="all"),
        state=dict(
            type="str", choices=["present", "absent"], default="present", required=False
        ),
        configlet_mode=dict(type='str',
                            required=False,
                            default='override',
                            choices=['merge', 'override', 'delete']))

    module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)
    # Connect to CVP instance
    module.client = connect(module)

    result = devices_action(module=module)
    module.exit_json(**result)
Example #15
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(tasks=dict(required=True, type='list'),
                         wait=dict(default=0, type='int'),
                         state=dict(default='executed',
                                    choices=['executed', 'cancelled']))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    # Connect to CVP instance
    module.client = connect(module)

    result['changed'], result['data'], warnings = task_action(module)

    if warnings:
        [module.warn(w) for w in warnings]

    module.exit_json(**result)
Example #16
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(configlets=dict(type='dict', required=True),
                         cvp_facts=dict(type='dict', required=True),
                         configlet_filter=dict(type='list', default='none'))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)
    # if not HAS_FUZZYWUZZY:
    #     module.fail_json(msg='fuzzywuzzy required for this module')
    if not HAS_DIFFLIB:
        module.fail_json(msg='difflib required for this module')

    result = dict(changed=False, data={})
    messages = dict(issues=False)
    # Connect to CVP instance
    module.client = connect(module)

    # Pass module params to configlet_action to act on configlet
    result['changed'], result['data'] = configlet_action(module)
    module.exit_json(**result)
Example #17
0
def main():
    """
    main entry point for module execution.
    """
    argument_spec = dict(
        gather_subset=dict(type='list',
                           elements='str',
                           required=False,
                           choices=['default',
                                    'config',
                                    'tasks_pending',
                                    'tasks_all',
                                    'tasks_failed'],
                           default='default'),
        facts=dict(type='list',
                   elements='str',
                   required=False,
                   choices=['all',
                            'configlets',
                            'containers',
                            'devices',
                            'tasks'],
                   default='all'))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    # Forge standard Ansible output
    result = dict(changed=False, ansible_facts={})

    # Connect to CVP Instance
    module.client = connect(module)

    # Get Facts from CVP
    result['ansible_facts'] = facts_builder(module)

    # Standard Ansible outputs
    module.exit_json(**result)
Example #18
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        host=dict(required=True),
        port=dict(type='list', default=None),
        protocol=dict(default='https', choices=['http', 'https']),
        username=dict(required=True),
        password=dict(required=True),
    )

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    result = dict(changed=False)

    module.client = connect(module)

    try:
        result['cvpInfo'] = gather_cv_info(module)
        result['changed'] = True
    except CvpApiError, e:
        module.fail_json(msg=str(e))
Example #19
0
def main():
    """ main entry point for module execution
    """

    logging.basicConfig(format='%(asctime)s %(message)s',
                        filename='cv_fact.log',
                        level=logging.DEBUG)

    argument_spec = dict(gather_subset=dict(type='list',
                                            elements='str',
                                            required=False,
                                            choices=['default', 'config'],
                                            default='default'))
    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=True)

    result = dict(changed=False, ansible_facts={})

    module.client = connect(module)

    result['ansible_facts'] = cv_facts(module)
    result['changed'] = False

    module.exit_json(**result)
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        host=dict(required=True),
        port=dict(required=False, default=None),
        protocol=dict(default='https', choices=['http', 'https']),
        username=dict(required=True),
        password=dict(required=True, no_log=True),
        server_name=dict(required=True),
        switch_name=dict(required=True),
        switch_port=dict(required=True),
        port_vlan=dict(required=False, default=None),
        template=dict(require=True),
        action=dict(default='show', choices=['show', 'add', 'remove']),
        auto_run=dict(type='bool', default=False))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)
    if not HAS_JINJA2:
        module.fail_json(msg='The Jinja2 python module is required.')
    if not HAS_CVPRAC:
        module.fail_json(msg='The cvprac python module is required.')
    result = dict(changed=False)
    module.client = connect(module)

    try:
        result['switchInfo'] = switch_info(module)
        if module.params['action'] in ['add', 'remove']:
            switch_in_compliance(module, result['switchInfo'])
        switch_configlet = server_configurable_configlet(module,
                                                         result['switchInfo'])
        if not switch_configlet:
            module.fail_json(msg=str('Switch %s has no configurable server'
                                     ' ports.' % module.params['switch_name']))
        result['switchConfigurable'] = True
        if not port_configurable(module, switch_configlet):
            module.fail_json(msg=str('Port %s is not configurable as a server'
                                     ' port on switch %s.'
                                     % (module.params['switch_port'],
                                        module.params['switch_name'])))
        result['portConfigurable'] = True
        result['taskCreated'] = False
        result['taskExecuted'] = False
        result['taskCompleted'] = False
        result.update(configlet_action(module, switch_configlet))
        if module.params['auto_run'] and module.params['action'] != 'show':
            task_id = configlet_update_task(module)
            if task_id:
                result['taskId'] = task_id
                note = ('Update config on %s with %s action from Ansible.'
                        % (module.params['switch_name'],
                           module.params['action']))
                module.client.api.add_note_to_task(task_id, note)
                module.client.api.execute_task(task_id)
                result['taskExecuted'] = True
                task_completed = wait_for_task_completion(module, task_id)
                if task_completed:
                    result['taskCompleted'] = True
            else:
                result['taskCreated'] = False
    except CvpApiError as e:
        module.fail_json(msg=str(e))

    module.exit_json(**result)
Example #21
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        topology=dict(type='dict', required=True),
        cvp_facts=dict(type='dict', required=True),
        save_topology=dict(type='bool',
                           default=True)  # Enable or disable task creation
    )

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)
    result = dict(changed=False, cv_container={})
    result['cv_container']['tasks'] = list()
    module.client = connect(module)
    deletion_process = None
    creation_process = None
    try:
        # Start process to create new containers
        # Should be done only if topology is iterable.
        if (isIterable(module.params['topology'])
                and module.params['topology'] is not None):
            creation_process = create_new_containers(
                module=module,
                intended=module.params['topology'],
                facts=module.params['cvp_facts'])
            if creation_process[0]:
                result['cv_container']['changed'] = True
                result['cv_container']['creation_result'] = creation_process[1]

            # Start process to move devices to targetted containers
            move_process = move_devices_to_container(
                module=module,
                intended=module.params['topology'],
                facts=module.params['cvp_facts'])

            if move_process is not None:
                result['cv_container']['changed'] = True
                # If a list of task exists, we expose it
                if 'taskIds' in move_process['moved_devices']:
                    for taskId in move_process['moved_devices']['taskIds']:
                        result['cv_container']['tasks'].append(
                            task_info(module=module, taskId=taskId))
                # move_process['moved_devices'].pop('taskIds',None)
                result['cv_container']['moved_result'] = move_process[
                    'moved_devices']

            # Start process to move devices to targetted containers
            attached_process = attached_configlet_to_container(
                module=module,
                intended=module.params['topology'],
                facts=module.params['cvp_facts'])
            # module.fail_json(msg=attached_process)
            if attached_process is not None:
                result['cv_container']['changed'] = True
                # If a list of task exists, we expose it
                if 'taskIds' in attached_process['attached_configlet']:
                    for taskId in attached_process['attached_configlet'][
                            'taskIds']:
                        result['cv_container']['tasks'].append(
                            task_info(module=module, taskId=taskId))
                # move_process['moved_devices'].pop('taskIds',None)
                result['cv_container'][
                    'attached_configlet'] = attached_process[
                        'attached_configlet']

        # Start process to delete unused container.
        if (isIterable(module.params['topology'])
                and module.params['topology'] is not None):
            deletion_process = delete_unused_containers(
                module=module,
                intended=module.params['topology'],
                facts=module.params['cvp_facts'])
        else:
            deletion_process = delete_unused_containers(
                module=module,
                intended=dict(),
                facts=module.params['cvp_facts'])
        if deletion_process[0]:
            result['cv_container']['changed'] = True
            result['cv_container']['deletion_result'] = deletion_process[1]
    except CvpApiError as e:
        module.fail_json(msg=str(e))
    module.exit_json(**result)
Example #22
0
def main():
    """ main entry point for module execution
    """
    argument_spec = dict(
        topology=dict(type='dict', required=True),
        cvp_facts=dict(type='dict', required=True),
        save_topology=dict(type='bool',
                           default=True),  # Enable or disable task creation
        mode=dict(type='str',
                  required=False,
                  default='merge',
                  choices=['merge', 'override', 'delete']))

    if DEBUG_MODULE:
        logging.basicConfig(format='%(asctime)s %(message)s',
                            filename='cv_container_v2.log',
                            level=logging.DEBUG)

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)
    result = dict(changed=False, data={})
    result['data']['taskIds'] = list()
    result['data']['tasks'] = list()
    module.client = connect(module)
    deletion_process = None
    creation_process = None
    try:
        if module.params['mode'] in ['merge', 'override']:
            # -> Start process to create new containers
            if (isIterable(module.params['topology'])
                    and module.params['topology'] is not None):
                creation_process = create_new_containers(
                    module=module,
                    intended=module.params['topology'],
                    facts=module.params['cvp_facts'])
                if creation_process[0]:
                    result['data']['changed'] = True
                    result['data']['creation_result'] = creation_process[1]
                # -> Start process to move devices to targetted containers
                move_process = move_devices_to_container(
                    module=module,
                    intended=module.params['topology'],
                    facts=module.params['cvp_facts'])
                if move_process is not None:
                    result['data']['changed'] = True
                    # If a list of task exists, we expose it
                    if 'taskIds' in move_process['moved_devices']:
                        for taskId in move_process['moved_devices']['taskIds']:
                            result['data']['taskIds'].append(taskId)
                    # move_process['moved_devices'].pop('taskIds',None)
                    result['data']['moved_result'] = move_process[
                        'moved_devices']

                # -> Start process to move devices to targetted containers
                attached_process = attached_configlet_to_container(
                    module=module,
                    intended=module.params['topology'],
                    facts=module.params['cvp_facts'])
                if attached_process is not None:
                    result['data']['changed'] = True
                    # If a list of task exists, we expose it
                    if 'taskIds' in attached_process['attached_configlet']:
                        for taskId in attached_process['attached_configlet'][
                                'taskIds']:
                            result['data']['taskIds'].append(taskId)
                    # move_process['moved_devices'].pop('taskIds',None)
                    result['data']['attached_configlet'] = attached_process[
                        'attached_configlet']

        # If MODE is override we also delete containers with no device and not listed in our topology
        if module.params['mode'] == 'override':
            # -> Start process to delete unused container.
            if (isIterable(module.params['topology'])
                    and module.params['topology'] is not None):
                deletion_process = delete_unused_containers(
                    module=module,
                    intended=module.params['topology'],
                    facts=module.params['cvp_facts'])
            else:
                deletion_process = delete_unused_containers(
                    module=module,
                    intended=dict(),
                    facts=module.params['cvp_facts'])
            if deletion_process[0]:
                result['data']['changed'] = True
                result['data']['deletion_result'] = deletion_process[1]

        # If MODE is DELETE then we start process to delete topology
        elif module.params['mode'] == 'delete':
            # -> Start process to delete container described in topology.
            if (isIterable(module.params['topology'])
                    and module.params['topology'] is not None):
                deletion_topology_process = delete_topology(
                    module=module,
                    intended=module.params['topology'],
                    facts=module.params['cvp_facts'])
                if deletion_topology_process[0]:
                    result['data']['changed'] = True
                    result['data'][
                        'deletion_result'] = deletion_topology_process[1]

        if len(result['data']['taskIds']) > 0:
            result['data']['tasks'] = get_tasks(
                module=module, taskIds=result['data']['taskIds'])

        # DEPRECATION: Make a copy to support old namespace.
        result['cv_container'] = result['data']

    except CvpApiError as e:
        module.fail_json(msg=str(e))
    module.exit_json(**result)