Example #1
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)