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)
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))
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))
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)
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))
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)
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)
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)
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)
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))
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)
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)
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)
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)
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))
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)
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)
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)