def main(): fields = dict(operation=dict(type='str', required=True), path_params=dict(type='dict'), destination=dict(type='path', required=True)) module = AnsibleModule(argument_spec=fields, supports_check_mode=True) params = module.params connection = Connection(module._socket_path) op_name = params['operation'] op_spec = connection.get_operation_spec(op_name) if op_spec is None: module.fail_json(msg='Operation with specified name is not found: %s' % op_name) if not is_download_operation(op_spec): module.fail_json( msg= 'Invalid download operation: %s. The operation must make GET request and return a file.' % op_name) try: path_params = params['path_params'] validate_params(connection, op_name, path_params) if module.check_mode: module.exit_json(changed=False) connection.download_file(op_spec[OperationField.URL], params['destination'], path_params) module.exit_json(changed=False) except FtdServerError as e: module.fail_json( msg='Download request for %s operation failed. Status code: %s. ' 'Server response: %s' % (op_name, e.code, e.response)) except ValidationError as e: module.fail_json(msg=e.args[0])
def main(): fields = dict( operation=dict(type='str', required=True), file_to_upload=dict(type='path', required=True), register_as=dict(type='str'), ) module = AnsibleModule(argument_spec=fields, supports_check_mode=True) params = module.params connection = Connection(module._socket_path) op_spec = connection.get_operation_spec(params['operation']) if op_spec is None: module.fail_json(msg='Operation with specified name is not found: %s' % params['operation']) if not is_upload_operation(op_spec): module.fail_json( msg= 'Invalid upload operation: %s. The operation must make POST request and return UploadStatus model.' % params['operation']) try: if module.check_mode: module.exit_json() resp = connection.upload_file(params['file_to_upload'], op_spec[OperationField.URL]) module.exit_json(changed=True, response=resp, ansible_facts=construct_ansible_facts( resp, module.params)) except FtdServerError as e: module.fail_json( msg='Upload request for %s operation failed. Status code: %s. ' 'Server response: %s' % (params['operation'], e.code, e.response))
def main(): argument_spec = dict(uid=dict(type='str', default=None), state=dict(type='str', default='published', choices=['published', 'discarded'])) module = AnsibleModule(argument_spec=argument_spec) connection = Connection(module._socket_path) code, response = get_session(module, connection) result = {'changed': False} if code == 200: result['changed'] = True payload = None if module.params['uid']: payload = {'uid': module.params['uid']} if module.params['state'] == 'published': code, response = connection.send_request('/web_api/publish', payload) else: code, response = connection.send_request('/web_api/discard', payload) if code != 200: module.fail_json(msg=response) result['checkpoint_session'] = response else: module.fail_json( msg='Check Point device returned error {0} with message {1}'. format(code, response)) module.exit_json(**result)
def edit_config(module, path=None, content=None, method='GET', format='json'): if path is None: raise ValueError('path value must be provided') content_type = None if format == 'xml': content_type = 'application/yang-data+xml' connection = Connection(module._socket_path) return connection.send_request(content, path=path, method=method, content_type=content_type)
def get_connection(module): global _DEVICE_CONNECTION if not _DEVICE_CONNECTION: connection_proxy = Connection(module._socket_path) cap = json.loads(connection_proxy.get_capabilities()) if cap['network_api'] == 'cliconf': conn = Cli(module) elif cap['network_api'] == 'exosapi': conn = HttpApi(module) else: module.fail_json(msg='Invalid connection type %s' % cap['network_api']) _DEVICE_CONNECTION = conn return _DEVICE_CONNECTION
def get(module, path=None, content=None, fields=None, output='json'): if path is None: raise ValueError('path value must be provided') if content: path += '?' + 'content=%s' % content if fields: path += '?' + 'field=%s' % fields accept = None if output == 'xml': accept = 'application/yang-data+xml' connection = Connection(module._socket_path) return connection.send_request(None, path=path, method='GET', accept=accept)
def get_connection(module): global _DEVICE_CONNECTION if not _DEVICE_CONNECTION: if is_local_eapi(module): conn = LocalEapi(module) else: connection_proxy = Connection(module._socket_path) cap = json.loads(connection_proxy.get_capabilities()) if cap['network_api'] == 'cliconf': conn = Cli(module) elif cap['network_api'] == 'eapi': conn = HttpApi(module) _DEVICE_CONNECTION = conn return _DEVICE_CONNECTION
def main(): argument_spec = dict( adom=dict(type="str", default="root"), mode=dict(choices=["add", "set", "delete", "update"], type="str", default="add"), startip=dict(required=False, type="str"), name=dict(required=False, type="str"), endip=dict(required=False, type="str"), comments=dict(required=False, type="str"), dynamic_mapping=dict(required=False, type="list"), dynamic_mapping_comments=dict(required=False, type="str"), dynamic_mapping_endip=dict(required=False, type="str"), dynamic_mapping_startip=dict(required=False, type="str"), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=False, ) # MODULE PARAMGRAM paramgram = { "mode": module.params["mode"], "adom": module.params["adom"], "startip": module.params["startip"], "name": module.params["name"], "endip": module.params["endip"], "comments": module.params["comments"], "dynamic_mapping": { "comments": module.params["dynamic_mapping_comments"], "endip": module.params["dynamic_mapping_endip"], "startip": module.params["dynamic_mapping_startip"], } } module.paramgram = paramgram fmgr = None if module._socket_path: connection = Connection(module._socket_path) fmgr = FortiManagerHandler(connection, module) fmgr.tools = FMGRCommon() else: module.fail_json(**FAIL_SOCKET_MSG) list_overrides = ['dynamic_mapping'] paramgram = fmgr.tools.paramgram_child_list_override( list_overrides=list_overrides, paramgram=paramgram, module=module) results = DEFAULT_RESULT_OBJ try: results = fmgr_fwobj_ippool6_modify(fmgr, paramgram) fmgr.govern_response(module=module, results=results, ansible_facts=fmgr.construct_ansible_facts( results, module.params, paramgram)) except Exception as err: raise FMGBaseException(err) return module.exit_json(**results[1])
def main(): fields = dict( operation=dict(type='str', required=True), data=dict(type='dict'), query_params=dict(type='dict'), path_params=dict(type='dict'), register_as=dict(type='str'), filters=dict(type='dict') ) module = AnsibleModule(argument_spec=fields, supports_check_mode=True) params = module.params connection = Connection(module._socket_path) resource = BaseConfigurationResource(connection, module.check_mode) op_name = params['operation'] try: resp = resource.execute_operation(op_name, params) module.exit_json(changed=resource.config_changed, response=resp, ansible_facts=construct_ansible_facts(resp, module.params)) except FtdInvalidOperationNameError as e: module.fail_json(msg='Invalid operation name provided: %s' % e.operation_name) except FtdConfigurationError as e: module.fail_json(msg='Failed to execute %s operation because of the configuration error: %s' % (op_name, e.msg)) except FtdServerError as e: module.fail_json(msg='Server returned an error trying to execute %s operation. Status code: %s. ' 'Server response: %s' % (op_name, e.code, e.response)) except FtdUnexpectedResponse as e: module.fail_json(msg=e.args[0]) except ValidationError as e: module.fail_json(msg=e.args[0]) except CheckModeException: module.exit_json(changed=False)
def api_command(module, command): payload = get_payload_from_parameters(module.params) connection = Connection(module._socket_path) # if user insert a specific version, we add it to the url version = ('v' + module.params['version'] + '/') if module.params.get('version') else '' code, response = send_request(connection, version, command, payload) result = {'changed': True} if code == 200: if module.params['wait_for_task']: if 'task-id' in response: wait_for_task(module, version, connection, response['task-id']) elif 'tasks' in response: for task_id in response['tasks']: wait_for_task(module, version, connection, task_id) result[command] = response else: module.fail_json( msg='Checkpoint device returned error {0} with message {1}'.format( code, response)) return result
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "system_fortimanager": { "required": False, "type": "dict", "default": None, "options": { "central_management": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "central_mgmt_auto_backup": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "central_mgmt_schedule_config_restore": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "central_mgmt_schedule_script_restore": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "ip": {"required": False, "type": "str"}, "ipsec": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "vdom": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_system(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_system(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def get_connection(module): global _CONNECTION if _CONNECTION: return _CONNECTION _CONNECTION = Connection(module._socket_path) return _CONNECTION
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "firewall_vipgrp64": { "required": False, "type": "dict", "default": None, "options": { "state": {"required": False, "type": "str", "choices": ["present", "absent"]}, "color": {"required": False, "type": "int"}, "comments": {"required": False, "type": "str"}, "member": {"required": False, "type": "list", "options": { "name": {"required": True, "type": "str"} }}, "name": {"required": True, "type": "str"}, "uuid": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def get_connection(module): """Get switch connection Creates reusable SSH connection to the switch described in a given module. Args: module: A valid AnsibleModule instance. Returns: An instance of `ansible.module_utils.connection.Connection` with a connection to the switch described in the provided module. Raises: AnsibleConnectionFailure: An error occurred connecting to the device """ if hasattr(module, 'slxos_connection'): return module.slxos_connection capabilities = get_capabilities(module) network_api = capabilities.get('network_api') if network_api == 'cliconf': module.slxos_connection = Connection(module._socket_path) else: module.fail_json(msg='Invalid connection type %s' % network_api) return module.slxos_connection
def __init__(self, connection=None, *args, **kwargs): super(NetworkModule, self).__init__(*args, **kwargs) if connection is None: connection = Connection(self._socket_path) self.connection = connection
def get_capabilities(module): if hasattr(module, '_routeros_capabilities'): return module._routeros_capabilities capabilities = Connection(module._socket_path).get_capabilities() module._routeros_capabilities = json.loads(capabilities) return module._routeros_capabilities
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "log_fortiguard_override_setting": { "required": False, "type": "dict", "default": None, "options": { "override": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "status": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "upload_day": {"required": False, "type": "str"}, "upload_interval": {"required": False, "type": "str", "choices": ["daily", "weekly", "monthly"]}, "upload_option": {"required": False, "type": "str", "choices": ["store-and-upload", "realtime", "1-minute", "5-minute"]}, "upload_time": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_log_fortiguard(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_log_fortiguard(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = dict(device_hostname=dict(type='str', required=True), device_username=dict(type='str', required=False, default='admin'), device_password=dict(type='str', required=True, no_log=True), device_sudo_password=dict(type='str', required=False, no_log=True), device_new_password=dict(type='str', required=False, no_log=True), device_ip=dict(type='str', required=False), device_netmask=dict(type='str', required=False), device_gateway=dict(type='str', required=False), device_model=dict(type='str', required=False, choices=FtdModel.supported_models()), dns_server=dict(type='str', required=False), search_domains=dict(type='str', required=False, default='cisco.com'), console_ip=dict(type='str', required=True), console_port=dict(type='str', required=True), console_username=dict(type='str', required=True), console_password=dict(type='str', required=True, no_log=True), rommon_file_location=dict(type='str', required=True), image_file_location=dict(type='str', required=True), image_version=dict(type='str', required=True), force_install=dict(type='bool', required=False, default=False)) module = AnsibleModule(argument_spec=fields) assert_kick_is_installed(module) use_local_connection = module._socket_path is None if use_local_connection: check_required_params_for_local_connection(module, module.params) platform_model = module.params['device_model'] check_that_model_is_supported(module, platform_model) else: connection = Connection(module._socket_path) resource = BaseConfigurationResource(connection, module.check_mode) system_info = get_system_info(resource) platform_model = module.params['device_model'] or system_info[ 'platformModel'] check_that_model_is_supported(module, platform_model) check_that_update_is_needed(module, system_info) check_management_and_dns_params(resource, module.params) ftd_platform = FtdPlatformFactory.create(platform_model, module.params) ftd_platform.install_ftd_image(module.params) module.exit_json( changed=True, msg='Successfully installed FTD image %s on the firewall device.' % module.params["image_version"])
def get_connection(module): global _CONNECTION if _CONNECTION: return _CONNECTION _CONNECTION = Connection(module._socket_path) # Not all modules include the 'context' key. context = module.params.get('context') if context: if context == 'system': command = 'changeto system' else: command = 'changeto context %s' % context _CONNECTION.get(command) return _CONNECTION
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "firewall_ssh_setting": { "required": False, "type": "dict", "default": None, "options": { "caname": {"required": False, "type": "str"}, "host_trusted_checking": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "hostkey_dsa1024": {"required": False, "type": "str"}, "hostkey_ecdsa256": {"required": False, "type": "str"}, "hostkey_ecdsa384": {"required": False, "type": "str"}, "hostkey_ecdsa521": {"required": False, "type": "str"}, "hostkey_ed25519": {"required": False, "type": "str"}, "hostkey_rsa2048": {"required": False, "type": "str"}, "untrusted_caname": {"required": False, "type": "str"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_firewall_ssh(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_firewall_ssh(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def get_capabilities(module): if hasattr(module, '_nvos_capabilities'): return module._nvos_capabilities try: capabilities = Connection(module._socket_path).get_capabilities() except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) module._nvos_capabilities = json.loads(capabilities) return module._nvos_capabilities
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "report_setting": { "required": False, "type": "dict", "default": None, "options": { "fortiview": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "pdf_report": {"required": False, "type": "str", "choices": ["enable", "disable"]}, "report_source": {"required": False, "type": "str", "choices": ["forward-traffic", "sniffer-traffic", "local-deny-traffic"]}, "top_n": {"required": False, "type": "int"}, "web_browsing_threshold": {"required": False, "type": "int"} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_report(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_report(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): fields = { "host": {"required": False, "type": "str"}, "username": {"required": False, "type": "str"}, "password": {"required": False, "type": "str", "default": "", "no_log": True}, "vdom": {"required": False, "type": "str", "default": "root"}, "https": {"required": False, "type": "bool", "default": True}, "ssl_verify": {"required": False, "type": "bool", "default": True}, "ftp_proxy_explicit": { "required": False, "type": "dict", "default": None, "options": { "incoming_ip": {"required": False, "type": "str"}, "incoming_port": {"required": False, "type": "str"}, "outgoing_ip": {"required": False, "type": "str"}, "sec_default_action": {"required": False, "type": "str", "choices": ["accept", "deny"]}, "status": {"required": False, "type": "str", "choices": ["enable", "disable"]} } } } module = AnsibleModule(argument_spec=fields, supports_check_mode=False) # legacy_mode refers to using fortiosapi instead of HTTPAPI legacy_mode = 'host' in module.params and module.params['host'] is not None and \ 'username' in module.params and module.params['username'] is not None and \ 'password' in module.params and module.params['password'] is not None if not legacy_mode: if module._socket_path: connection = Connection(module._socket_path) fos = FortiOSHandler(connection) is_error, has_changed, result = fortios_ftp_proxy(module.params, fos) else: module.fail_json(**FAIL_SOCKET_MSG) else: try: from fortiosapi import FortiOSAPI except ImportError: module.fail_json(msg="fortiosapi module is required") fos = FortiOSAPI() login(module.params, fos) is_error, has_changed, result = fortios_ftp_proxy(module.params, fos) fos.logout() if not is_error: module.exit_json(changed=has_changed, meta=result) else: module.fail_json(msg="Error in repo", meta=result)
def main(): """entry point for module execution """ argument_spec = dict( command=dict(type='str', required=True), prompt=dict(type='list', required=False), answer=dict(type='list', required=False), newline=dict(type='bool', default=True, required=False), sendonly=dict(type='bool', default=False, required=False), check_all=dict(type='bool', default=False, required=False), ) required_together = [['prompt', 'answer']] module = AnsibleModule(argument_spec=argument_spec, required_together=required_together, supports_check_mode=True) if module.check_mode and not module.params['command'].startswith('show'): module.fail_json( msg='Only show commands are supported when using check_mode, not ' 'executing %s' % module.params['command']) warnings = list() result = {'changed': False, 'warnings': warnings} connection = Connection(module._socket_path) response = '' try: response = connection.get(**module.params) except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) if not module.params['sendonly']: try: result['json'] = module.from_json(response) except ValueError: pass result.update({ 'stdout': response, }) module.exit_json(**result)
def get_connection(module): global _CONNECTION if _CONNECTION: return _CONNECTION _CONNECTION = Connection(module._socket_path) context = None try: context = module.params['context'] except KeyError: context = None if context: if context == 'system': command = 'changeto system' else: command = 'changeto context %s' % context _CONNECTION.get(command) return _CONNECTION
def get_connection(module): if hasattr(module, '_nvos_connection'): return module._nvos_connection capabilities = get_capabilities(module) network_api = capabilities.get('network_api') if network_api == 'cliconf': module._nvos_connection = Connection(module._socket_path) else: module.fail_json(msg='Invalid connection type %s' % network_api) return module._nvos_connection
def _load_config(module, config): """Sends configuration commands to the remote device """ connection = Connection(module._socket_path) rc, out, err = exec_command(module, 'mmi-mode enable') if rc != 0: module.fail_json(msg='unable to set mmi-mode enable', output=err) rc, out, err = exec_command(module, 'system-view immediately') if rc != 0: module.fail_json(msg='unable to enter system-view', output=err) current_view_prompt = system_view_prompt = connection.get_prompt() for index, cmd in enumerate(config): level = command_level(cmd) current_view_prompt = connection.get_prompt() rc, out, err = exec_command(module, cmd) if rc != 0: print_msg = cli_err_msg(cmd.strip(), err) # re-try command max 3 times for i in (1, 2, 3): current_view_prompt = connection.get_prompt() if current_view_prompt != system_view_prompt and not_user_view(current_view_prompt): exec_command(module, "quit") current_view_prompt = connection.get_prompt() # if current view is system-view, break. if current_view_prompt == system_view_prompt and level > 0: break elif current_view_prompt == system_view_prompt or not not_user_view(current_view_prompt): break rc, out, err = exec_command(module, cmd) if rc == 0: print_msg = None break if print_msg is not None: module.fail_json(msg=print_msg)
def get_capabilities(module): if hasattr(module, 'capabilities'): return module._capabilities try: capabilities = Connection(module._socket_path).get_capabilities() except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace')) except AssertionError: # No socket_path, connection most likely local. return dict(network_api="local") module._capabilities = json.loads(capabilities) return module._capabilities
def run(self, tmp=None, task_vars=None): socket_path = None self.play_context = copy.deepcopy(self._play_context) self.results = super(ActionModule, self).run(task_vars=task_vars) if self.play_context.connection.split('.')[-1] != 'network_cli': # Plugin is supported only with network_cli self.results['failed'] = True self.results[ 'msg'] = 'Connection type must be fully qualified name for network_cli connection type, got %s' % self.play_context.connection return self.results # Get playbook values self.playvals = self.process_playbook_values() file_pull = self.playvals['file_pull'] self.check_library_dependencies(file_pull) if socket_path is None: socket_path = self._connection.socket_path self.conn = Connection(socket_path) # Call get_capabilities() to start the connection to the device. self.conn.get_capabilities() self.socket_timeout = self.conn.get_option( 'persistent_command_timeout') # This action plugin support two modes of operation. # - file_pull is False - Push files from the ansible controller to nxos switch. # - file_pull is True - Initiate copy from the device to pull files to the nxos switch. self.results['transfer_status'] = 'No Transfer' self.results['file_system'] = self.playvals['file_system'] if file_pull: self.file_pull() else: self.file_push() return self.results
def main(): argument_spec = dict( name=dict(type='str'), uid=dict(type='str'), layer=dict(type='str', required=True), ) module = AnsibleModule(argument_spec=argument_spec) connection = Connection(module._socket_path) code, response = get_access_rule(module, connection) if code == 200: module.exit_json(ansible_facts=dict(checkpoint_access_rules=response)) else: module.fail_json(msg='Checkpoint device returned error {0} with message {1}'.format(code, response))