#! /usr/bin/env python

def main():
    module = AnsibleModule(argument_spec=dict(
            subnet=dict(required=True,type='str'),
            num=dict(required=True,type='int'),
            start_index=dict(type='int',default=1),
    ))

    addr, prefix = module.params['subnet'].split('/')
    aquads = addr.split('.')
    naddr = (
        int(aquads[0]) * (2 ** 24) +
        int(aquads[1]) * (2 ** 16) +
        int(aquads[2]) * (2 ** 8) +
        int(aquads[3])
    )
    bits_avail = 32-int(prefix)
    mask = 0xffffffff << bits_avail
    nbase = naddr & mask
    quads = (
        nbase / (2 ** 24),
        (nbase / (2 ** 16)) % 256,
        (nbase / (2 ** 8)) % 256,
        nbase % 256
    )
    max_num = 2 ** bits_avail - module.params['start_index']

    if module.params['num'] > max_num:
        module.fail_json(msg="Number of hosts exceeds subnet size")

    module.exit_json(changed=False, quads=quads, naddr=naddr, mask=mask, nbase=nbase)

from ansible.module_utils.basic import *
main()
