Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import traceback

from ansible.module_utils.basic import AnsibleModule
from netifaces import interfaces, ifaddresses, AF_INET6


DOCUMENTATION = '''
---
module: trilio_ipv6_facts
short_description: Returns ipv6 address and interface info
options:
  interface:
    description:
        - interface of the ip address
        - Looks for all interfaces if not defined
    required: no
    default: None

author: Abhijeet Patra
'''

EXAMPLES = '''
examples:
trilio_ipv6_facts:
    interface: "ens3"
'''


def get_ip_addresses(iface=None):
    result = {}
    iface = interfaces() if not iface else [iface]
    for ifaceName in iface:
        try:
            ip_addresses = []
            for link in ifaddresses(ifaceName)[AF_INET6]:
                ip_addresses.append(link['addr'])
            result[ifaceName] = ip_addresses
            
        except Exception as ex:
            pass

    return {'trilio_ipv6':result}

def dispatch(iface):

    return dict(changed=False,
                ansible_facts=get_ip_addresses(iface))


def main():

    module = AnsibleModule(
        argument_spec=dict(
            interface = dict(required=False, default=None),
        ),
    )

    iface = module.params['interface']

    try:
        d = dispatch(iface)
    except Exception:
        module.fail_json(msg=traceback.format_exc())
    else:
        module.exit_json(**d)


# this is magic, see lib/ansible/module_common.py
# <<INCLUDE_ANSIBLE_MODULE_COMMON>>
if __name__ == '__main__':
    main()