def main(): """ main entry point for module execution """ argument_spec = dict( banner=dict(required=True, choices=['login', 'motd']), text=dict(), state=dict(default='present', choices=['present', 'absent']) ) argument_spec.update(iosxr_argument_spec) required_if = [('state', 'present', ('text',))] module = AnsibleModule(argument_spec=argument_spec, required_if=required_if, supports_check_mode=True) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): config_object = NCConfiguration(module) result = None if config_object is not None: result = config_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( name=dict(type="str"), description=dict(type="str"), speed=dict(choices=["10", "100", "1000"]), mtu=dict(), duplex=dict(choices=["full", "half"]), enabled=dict(default=True, type="bool"), active=dict(default="active", type="str", choices=["active", "preconfigure"]), tx_rate=dict(), rx_rate=dict(), delay=dict(default=10, type="int"), state=dict(default="present", choices=["present", "absent", "up", "down"]), ) aggregate_spec = deepcopy(element_spec) aggregate_spec["name"] = dict(required=True) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) argument_spec = dict( aggregate=dict(type="list", elements="dict", options=aggregate_spec)) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) required_one_of = [["name", "aggregate"]] mutually_exclusive = [["name", "aggregate"]] module = AnsibleModule( argument_spec=argument_spec, required_one_of=required_one_of, mutually_exclusive=mutually_exclusive, supports_check_mode=True, ) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): if module.params["active"] == "preconfigure": module.fail_json( msg= "Physical interface pre-configuration is not supported with transport 'netconf'" ) config_object = NCConfiguration(module) result = {} if config_object: result = config_object.run() module.exit_json(**result)
def main(): """ Main entry point for Ansible module execution """ argument_spec = dict(hostname=dict(), vrf=dict(type='str', default='default'), domain_name=dict(), domain_search=dict(type='list'), name_servers=dict(type='list'), lookup_source=dict(), lookup_enabled=dict(type='bool', default=True), state=dict(choices=['present', 'absent'], default='present')) argument_spec.update(iosxr_argument_spec) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): config_object = NCConfiguration(module) result = None if config_object: result = config_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( dest=dict(type='str', choices=['host', 'console', 'monitor', 'buffered', 'file']), name=dict(type='str'), size=dict(type='int'), vrf=dict(type='str', default='default'), facility=dict(type='str', default='local7'), hostnameprefix=dict(type='str'), level=dict(type='str', default='informational', aliases=['severity'], choices=[ 'emergencies', 'alerts', 'critical', 'errors', 'warning', 'notifications', 'informational', 'debugging' ]), state=dict(default='present', choices=['present', 'absent']), ) aggregate_spec = deepcopy(element_spec) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) mutually_exclusive = [('dest', 'facility', 'hostnameprefix')] required_if = [('dest', 'host', ['name']), ('dest', 'file', ['name']), ('dest', 'buffered', ['size']), ('dest', 'console', ['level']), ('dest', 'monitor', ['level'])] argument_spec = dict(aggregate=dict(type='list', elements='dict', options=aggregate_spec, mutually_exclusive=mutually_exclusive, required_if=required_if), ) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) module = AnsibleModule(argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, required_if=required_if, supports_check_mode=True) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): config_object = NCConfiguration(module) if config_object: result = config_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict(name=dict(type='str'), description=dict(type='str'), speed=dict(choices=['10', '100', '1000']), mtu=dict(), duplex=dict(choices=['full', 'half']), enabled=dict(default=True, type='bool'), active=dict(default='active', type='str', choices=['active', 'preconfigure']), tx_rate=dict(), rx_rate=dict(), delay=dict(default=10, type='int'), state=dict(default='present', choices=['present', 'absent', 'up', 'down'])) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) argument_spec = dict(aggregate=dict(type='list', elements='dict', options=aggregate_spec), ) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) required_one_of = [['name', 'aggregate']] mutually_exclusive = [['name', 'aggregate']] module = AnsibleModule(argument_spec=argument_spec, required_one_of=required_one_of, mutually_exclusive=mutually_exclusive, supports_check_mode=True) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): if module.params['active'] == 'preconfigure': module.fail_json( msg= "Physical interface pre-configuration is not supported with transport 'netconf'" ) config_object = NCConfiguration(module) result = {} if config_object: result = config_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( dest=dict( type="str", choices=["host", "console", "monitor", "buffered", "file"], ), name=dict(type="str"), size=dict(type="int"), path=dict(type="str"), vrf=dict(type="str", default="default"), facility=dict(type="str", default="local7"), hostnameprefix=dict(type="str"), level=dict( type="str", default="debugging", aliases=["severity"], choices=[ "emergencies", "alerts", "critical", "errors", "warning", "notifications", "informational", "debugging", ], ), state=dict(default="present", choices=["present", "absent"]), ) aggregate_spec = deepcopy(element_spec) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) mutually_exclusive = [("dest", "facility", "hostnameprefix")] required_if = [ ("dest", "host", ["name"]), ("dest", "file", ["name"]), ("dest", "buffered", ["size"]), ("dest", "console", ["level"]), ("dest", "monitor", ["level"]), ] argument_spec = dict(aggregate=dict( type="list", elements="dict", options=aggregate_spec, mutually_exclusive=mutually_exclusive, required_if=required_if, )) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) module = AnsibleModule( argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, required_if=required_if, supports_check_mode=True, ) config_object = None if is_cliconf(module): config_object = CliConfiguration(module) os_version = get_os_version(module) elif is_netconf(module): config_object = NCConfiguration(module) os_version = (get_capabilities(module).get("device_info").get( "network_os_version")) if config_object: result = config_object.run(os_version) module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( name=dict(), configured_password=dict(no_log=True), update_password=dict( default="always", choices=["on_create", "always"] ), admin=dict(type="bool", default=False), public_key=dict(), public_key_contents=dict(), group=dict(aliases=["role"]), groups=dict(type="list", elements="dict"), state=dict(default="present", choices=["present", "absent"]), ) aggregate_spec = deepcopy(element_spec) aggregate_spec["name"] = dict(required=True) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) mutually_exclusive = [ ("name", "aggregate"), ("public_key", "public_key_contents"), ("group", "groups"), ] argument_spec = dict( aggregate=dict( type="list", elements="dict", options=aggregate_spec, aliases=["users", "collection"], mutually_exclusive=mutually_exclusive, ), purge=dict(type="bool", default=False), ) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) module = AnsibleModule( argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, supports_check_mode=True, ) if module.params["public_key_contents"] or module.params["public_key"]: if not HAS_B64: module.fail_json( msg="library base64 is required but does not appear to be " "installed. It can be installed using `pip install base64`" ) if paramiko is None: module.fail_json( msg="library paramiko is required but does not appear to be " "installed. It can be installed using `pip install paramiko`" ) result = {"changed": False, "warnings": []} config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module, result) elif is_netconf(module): config_object = NCConfiguration(module, result) if config_object: result = config_object.run() if module.params["public_key_contents"] or module.params["public_key"]: pubkey_object = PublicKeyManager(module, result) result = pubkey_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( dest=dict( type="str", choices=["host", "console", "monitor", "buffered", "file"], ), name=dict(type="str"), size=dict(type="int"), vrf=dict(type="str", default="default"), facility=dict(type="str", default="local7"), hostnameprefix=dict(type="str"), level=dict( type="str", default="informational", aliases=["severity"], choices=[ "emergencies", "alerts", "critical", "errors", "warning", "notifications", "informational", "debugging", ], ), state=dict(default="present", choices=["present", "absent"]), ) aggregate_spec = deepcopy(element_spec) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) mutually_exclusive = [("dest", "facility", "hostnameprefix")] required_if = [ ("dest", "host", ["name"]), ("dest", "file", ["name"]), ("dest", "buffered", ["size"]), ("dest", "console", ["level"]), ("dest", "monitor", ["level"]), ] argument_spec = dict(aggregate=dict( type="list", elements="dict", options=aggregate_spec, mutually_exclusive=mutually_exclusive, required_if=required_if, )) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) module = AnsibleModule( argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, required_if=required_if, supports_check_mode=True, ) config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module) elif is_netconf(module): config_object = NCConfiguration(module) if config_object: result = config_object.run() module.exit_json(**result)
def main(): """ main entry point for module execution """ element_spec = dict( name=dict(), configured_password=dict(no_log=True), update_password=dict(default='always', choices=['on_create', 'always']), admin=dict(type='bool', default=False), public_key=dict(), public_key_contents=dict(), group=dict(aliases=['role']), groups=dict(type='list', elements='dict'), state=dict(default='present', choices=['present', 'absent']) ) aggregate_spec = deepcopy(element_spec) aggregate_spec['name'] = dict(required=True) # remove default in aggregate spec, to handle common arguments remove_default_spec(aggregate_spec) mutually_exclusive = [('name', 'aggregate'), ('public_key', 'public_key_contents'), ('group', 'groups')] argument_spec = dict( aggregate=dict(type='list', elements='dict', options=aggregate_spec, aliases=['users', 'collection'], mutually_exclusive=mutually_exclusive), purge=dict(type='bool', default=False) ) argument_spec.update(element_spec) argument_spec.update(iosxr_argument_spec) module = AnsibleModule(argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, supports_check_mode=True) if (module.params['public_key_contents'] or module.params['public_key']): if not HAS_B64: module.fail_json( msg='library base64 is required but does not appear to be ' 'installed. It can be installed using `pip install base64`' ) if paramiko is None: module.fail_json( msg='library paramiko is required but does not appear to be ' 'installed. It can be installed using `pip install paramiko`' ) result = {'changed': False, 'warnings': []} config_object = None if is_cliconf(module): # Commenting the below cliconf deprecation support call for Ansible 2.9 as it'll be continued to be supported # module.deprecate("cli support for 'iosxr_interface' is deprecated. Use transport netconf instead", # version='2.9') config_object = CliConfiguration(module, result) elif is_netconf(module): config_object = NCConfiguration(module, result) if config_object: result = config_object.run() if module.params['public_key_contents'] or module.params['public_key']: pubkey_object = PublicKeyManager(module, result) result = pubkey_object.run() module.exit_json(**result)