def main(): module_args = dict(config_name=dict(type='str', default='running-config'), config_json=dict(type='str', default=None), config_file=dict(type='str', default=None), remote_config_file_tftp_path=dict(type='str', default=None), vrf=dict(type='str')) aruba_ansible_module = ArubaAnsibleModule(module_args=module_args, store_config=False) tftp_path =\ aruba_ansible_module.module.params['remote_config_file_tftp_path'] vrf = aruba_ansible_module.module.params['vrf'] config_name = aruba_ansible_module.module.params['config_name'] config_json = aruba_ansible_module.module.params['config_json'] config_file = aruba_ansible_module.module.params['config_file'] if tftp_path is not None: if vrf is None: aruba_ansible_module.module.fail_json( msg="VRF needs to be provided in order to TFTP" " the configuration onto the switch") tftp_path_replace = tftp_path.replace("/", "%2F") tftp_path_encoded = tftp_path_replace.replace(":", "%3A") if config_name != 'running-config' and config_name != 'startup-config': aruba_ansible_module.module.fail_json( msg="Only running-config or startup-config " "can be uploaded using TFTP") aruba_ansible_module.tftp_switch_config_from_remote_location( tftp_path_encoded, config_name, vrf) else: if config_json: with open(config_json) as json_file: config_json = json.load(json_file) if config_file: with open(config_file) as json_file: config_json = json.load(json_file) aruba_ansible_module.upload_switch_config(config_json, config_name) result = dict(changed=aruba_ansible_module.changed, warnings=aruba_ansible_module.warnings) result["changed"] = True aruba_ansible_module.module.exit_json(**result)
def main(): module_args = dict(config_name=dict(type='str', default='running-config'), config_json=dict(type='str', default=None), config_file=dict(type='str', default=None), remote_config_file_tftp_path=dict(type='str', default=None), vrf=dict(type='str')) # Version Management try: from ansible_collections.arubanetworks.aoscx.plugins.module_utils.aoscx_pyaoscx import Session from pyaoscx.session import Session as Pyaoscx_Session from pyaoscx.pyaoscx_factory import PyaoscxFactory USE_PYAOSCX_SDK = True except ImportError: USE_PYAOSCX_SDK = False # Use PYAOSCX SDK if USE_PYAOSCX_SDK: from ansible.module_utils.basic import AnsibleModule # ArubaModule ansible_module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) # Session session = Session(ansible_module) # Set Variables tftp_path =\ ansible_module.params['remote_config_file_tftp_path'] vrf = ansible_module.params['vrf'] config_name = ansible_module.params['config_name'] config_json = ansible_module.params['config_json'] config_file = ansible_module.params['config_file'] result = dict(changed=False) if ansible_module.check_mode: ansible_module.exit_json(**result) # Get session's serialized information session_info = session.get_session() # Create pyaoscx session object s = Pyaoscx_Session.from_session(session_info['s'], session_info['url']) # Create a Pyaoscx Factory Object pyaoscx_factory = PyaoscxFactory(s) # Create an instance of the Configuration class from PyaoscxFactory config = pyaoscx_factory.configuration() # Contains action methods # Upload configuration file/json to switch success = config.upload_switch_config(config_name=config_name, config_file=config_file, config_json=config_json, vrf=vrf, remote_file_tftp_path=tftp_path) # Changed result['changed'] = success # Exit ansible_module.exit_json(**result) # Use Older Version else: aruba_ansible_module = ArubaAnsibleModule(module_args=module_args, store_config=False) tftp_path =\ aruba_ansible_module.module.params['remote_config_file_tftp_path'] vrf = aruba_ansible_module.module.params['vrf'] config_name = aruba_ansible_module.module.params['config_name'] config_json = aruba_ansible_module.module.params['config_json'] config_file = aruba_ansible_module.module.params['config_file'] if tftp_path is not None: if vrf is None: aruba_ansible_module.module.fail_json( msg="VRF needs to be provided in order to TFTP" " the configuration onto the switch") tftp_path_replace = tftp_path.replace("/", "%2F") tftp_path_encoded = tftp_path_replace.replace(":", "%3A") if config_name != 'running-config' and config_name != 'startup-config': aruba_ansible_module.module.fail_json( msg="Only running-config or startup-config " "can be uploaded using TFTP") aruba_ansible_module.tftp_switch_config_from_remote_location( tftp_path_encoded, config_name, vrf) else: if config_json: with open(config_json) as json_file: config_json = json.load(json_file) if config_file: with open(config_file) as json_file: config_json = json.load(json_file) aruba_ansible_module.upload_switch_config(config_json, config_name) result = dict(changed=aruba_ansible_module.changed, warnings=aruba_ansible_module.warnings) result["changed"] = True aruba_ansible_module.module.exit_json(**result)