def main():
    module = AnsibleModule(
        argument_spec=dict(action=dict(default='list', choices=['list']),
                           endpoint=dict(required=True, type='str'),
                           user=dict(required=False, type='str'),
                           password=dict(required=False, type='str'),
                           cookie=dict(required=False, type='str'),
                           resourcename=dict(required=True, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'list':
            jsonobj = listStorageProperties(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
Exemplo n.º 2
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list', choices=['add', 'create']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        wait=dict(required=False, type='bool', default=False),
        launchplan=dict(required=False, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    wait = module.params['wait']
    launchplan = module.params['launchplan']
    if launchplan is not None:
        launchplan = launchplan.replace("'", '"')

    changed = True

    if module.params['action'] == 'create' or module.params['action'] == 'add':
        jsonobj = addLaunchplan(endpoint, resourcename, cookie,
                                json.loads(launchplan))
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
Exemplo n.º 3
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list', choices=['list', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']

    changed = True

    if module.params['action'] == 'list':
        jsonobj = listInstances(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteInstance(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
def main():
    module = AnsibleModule(
            argument_spec = dict(
                    action          = dict(default='list', choices=['create', 'list', 'update', 'delete']),
                    endpoint        = dict(required=True, type='str'),
                    user            = dict(required=False, type='str'),
                    password        = dict(required=False, type='str'),
                    cookie          = dict(required=False, type='str'),
                    resourcename    = dict(required=True, type='str'),
                    name            = dict(required=False, type='str'),
                    protocol        = dict(required=False, type='str'),
                    description     = dict(required=False, type='str'),
                    dport           = dict(required=False, type='str'),
                    imcptype        = dict(required=False, type='str'),
                    imcpcode        = dict(required=False, type='str')
            )
    )

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    protocol = module.params['protocol']
    description = module.params['description']
    dport = module.params['dport']
    imcptype = module.params['imcptype']
    imcpcode = module.params['imcpcode']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createSecurityApplication(endpoint, resourcename, cookie, name, protocol, description, dport, imcptype, imcpcode)
            if 'message' in jsonobj and 'already exists' in jsonobj['message']:
                changed = False
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listSecurityApplications(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteSecurityApplication(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=False, type='str'),
        name=dict(required=False, type='str'),
        description=dict(required=False, type='str'),
        srclist=dict(required=False, type='str'),
        dstlist=dict(required=False, type='str'),
        application=dict(required=False, type='str'),
        ruleaction=dict(required=False, type='str', default='PERMIT'),
        disabled=dict(required=False, type='bool', default=False)))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    description = module.params['description']
    srclist = module.params['srclist']
    dstlist = module.params['dstlist']
    ruleaction = module.params['ruleaction']
    application = module.params['application']
    disabled = module.params['disabled']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createSecurityRule(endpoint, resourcename, cookie, name,
                                         srclist, dstlist, application,
                                         ruleaction, description, disabled)
            module.exit_json(changed=True, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listSecurityRules(endpoint, resourcename, cookie)
            module.exit_json(changed=True, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteSecurityRule(endpoint, resourcename, cookie)
            module.exit_json(changed=True, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list', choices=['create', 'list', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        instancename=dict(required=False, type='str'),
        storagevolumename=dict(required=False, type='str'),
        index=dict(required=False, type='int')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    instancename = module.params['resourcename']
    storagevolumename = module.params['resourcename']
    index = module.params['resourcename']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createStorageAttachment(endpoint, resourcename, cookie,
                                              instancename, storagevolumename,
                                              index)
            if 'message' in jsonobj and 'already exists' in jsonobj['message']:
                changed = False
            if wait:
                resourcename = name
                while jsonobj['status'] != 'Online':
                    time.sleep(5)
                    jsonresp = listStorageVolumes(endpoint, resourcename,
                                                  cookie)
                    jsonobj = jsonresp['result'][0]
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listStorageAttachments(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteStorageAttachment(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
Exemplo n.º 7
0
def main():
    module = AnsibleModule(
            argument_spec = dict(
                    action         = dict(default='list', choices=['create', 'list', 'update', 'delete']),
                    endpoint       = dict(required=True, type='str'),
                    user           = dict(required=False, type='str'),
                    password       = dict(required=False, type='str'),
                    cookie         = dict(required=False, type='str'),
                    resourcename   = dict(required=True, type='str'),
                    account        = dict(required=False, type='str'),
                    name           = dict(required=False, type='str'),
                    vcable         = dict(required=False, type='str'),
                    ip             = dict(required=False, type='str'),
                    parentpool     = dict(required=False, type='str'),
                    reservation    = dict(required=False, type='str')
            )
    )

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    account = module.params['account']
    name = module.params['name']
    vcable = module.params['vcable']
    ip = module.params['ip']
    parentpool = module.params['parentpool']
    reservation = module.params['reservation']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createIPAssociation(endpoint, resourcename, cookie, name, vcable, parentpool, reservation)
            module.exit_json(changed=True, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listIPAssociations(endpoint, resourcename, cookie)
            module.exit_json(changed=True, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteIPAssociation(endpoint, resourcename, cookie)
            module.exit_json(changed=True, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
Exemplo n.º 8
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        name=dict(required=False, type='str'),
        customervpngateway=dict(required=False, type='str'),
        psk=dict(required=False, type='str'),
        reachableroutes=dict(required=False, type='str'),
        enabled=dict(required=False, type='bool', default=False)))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    customervpngateway = module.params['customervpngateway']
    psk = module.params['psk']
    reachableroutes = module.params['reachableroutes']
    enabled = module.params['enabled']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createVpnEndpoint(endpoint, resourcename, cookie, name,
                                        customervpngateway, psk,
                                        reachableroutes, enabled)
            if 'message' in jsonobj and 'already exists' in jsonobj['message']:
                changed = False
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listVpnEndpoints(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteVpnEndpoint(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        wait=dict(required=False, type='bool', default=False),
        name=dict(required=False, type='str'),
        description=dict(required=False, type='str'),
        property_=dict(required=False,
                       type='str',
                       default='/oracle/private/storage/snapshot/collocated'),
        volume=dict(required=False, type='str'),
        tags=dict(required=False, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    wait = module.params['wait']
    name = module.params['name']
    description = module.params['description']
    property_ = module.params['property_']
    volume = module.params['volume']
    tags = module.params['tags']

    if module.params['action'] == 'create':
        jsonobj = createStorageVolumeSnapshot(endpoint, resourcename, cookie,
                                              name, description, property_,
                                              volume, tags)
        if wait:
            resourcename = name
            while jsonobj['status'] != 'completed':
                time.sleep(5)
                jsonresp = listStorageVolumeSnapshots(endpoint, resourcename,
                                                      cookie)
                jsonobj = jsonresp['result'][0]
        module.exit_json(changed=True, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listStorageVolumeSnapshots(endpoint, resourcename, cookie)
        module.exit_json(changed=True, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteStorageVolumeSnapshot(endpoint, resourcename, cookie)
        module.exit_json(changed=True, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        name=dict(required=False, type='str'),
        parentpool=dict(
            required=False, type='str', default='/oracle/public/ippool'),
        permanent=dict(required=False, type='bool', default=True)))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    permanent = module.params['permanent']
    parentpool = module.params['parentpool']

    changed = True
    jsonobj = module.params

    try:
        if module.params['action'] == 'create':
            jsonobj = createIPReservation(endpoint, resourcename, cookie, name,
                                          parentpool, permanent)
            if 'message' in jsonobj and 'already exists' in jsonobj['message']:
                changed = False
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'list':
            jsonobj = listIPReservations(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        elif module.params['action'] == 'delete':
            jsonobj = deleteIPReservation(endpoint, resourcename, cookie)
            module.exit_json(changed=changed, list=jsonobj)
        else:
            module.fail_json(msg="Unknown action")
    except OCObjectAlreadyExists as e:
        module.exit_json(changed=False, list=jsonobj)
    except OCObjectDoesNotExist as e:
        module.exit_json(changed=False, list=jsonobj)
    except Exception as e:
        module.fail_json(msg=str(e.message))

    return
Exemplo n.º 11
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        account=dict(required=False, type='str'),
        instance=dict(required=False, type='str'),
        machineimage=dict(required=False, type='str'),
        delay=dict(required=False, type='str'),
    ))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    account = module.params['account']
    instance = module.params['instance']
    machineimage = module.params['machineimage']
    delay = module.params['delay']

    changed = True

    if module.params['action'] == 'create':
        jsonobj = createInstanceSnapshot(endpoint, resourcename, cookie,
                                         account, instance, machineimage,
                                         delay)
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listInstanceSnapshot(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteInstanceSnapshot(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        name=dict(required=False, type='str'),
        description=dict(required=False, type='str'),
        outbound_cidr_policy=dict(default='permit',
                                  choices=['deny', 'reject', 'permit']),
        policy=dict(default='deny', choices=['deny', 'reject', 'permit'])))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    description = module.params['description']
    outbound_cidr_policy = module.params['outbound_cidr_policy']
    policy = module.params['policy']

    changed = True

    if module.params['action'] == 'create':
        jsonobj = createSecurityList(endpoint, resourcename, cookie, name,
                                     policy, outbound_cidr_policy, description)
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listSecurityLists(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteSecurityList(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
Exemplo n.º 13
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['add', 'create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        name=dict(required=False, type='str'),
        enabled=dict(required=False, type='bool', default=True),
        publickey=dict(required=False, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    name = module.params['name']
    enabled = module.params['enabled']
    publickey = module.params['publickey']

    changed = True

    if module.params['action'] == 'create' or module.params['action'] == 'add':
        jsonobj = addSshKey(endpoint, resourcename, cookie, name, publickey,
                            enabled)
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listSshKeys(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteSshKey(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
Exemplo n.º 14
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list', choices=['create', 'list', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        seclist=dict(required=False, type='str'),
        vcable=dict(required=False, type='str'),
        name=dict(required=False, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    seclist = module.params['seclist']
    vcable = module.params['vcable']
    name = module.params['name']

    changed = True

    if module.params['action'] == 'create':
        jsonobj = createSecurityAssociation(endpoint, resourcename, cookie,
                                            seclist, vcable, name)
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listSecurityAssociations(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteSecurityAssociation(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
Exemplo n.º 15
0
def main():
    module = AnsibleModule(argument_spec=dict(
        action=dict(default='list',
                    choices=['create', 'list', 'update', 'delete']),
        endpoint=dict(required=True, type='str'),
        user=dict(required=False, type='str'),
        password=dict(required=False, type='str'),
        cookie=dict(required=False, type='str'),
        resourcename=dict(required=True, type='str'),
        wait=dict(required=False, type='bool', default=False),
        waitstate=dict(required=False, choices=['Online']),
        waitdelay=dict(required=False, type='int', default=10),
        waitretries=dict(required=False, type='int', default=120),
        size=dict(required=False, type='str'),
        name=dict(required=False, type='str'),
        properties=dict(required=False,
                        type='list',
                        default=['/oracle/public/storage/default']),
        bootable=dict(required=False, type='bool', default=False),
        imagelist=dict(required=False, type='str'),
        imagelistentry=dict(required=False, type='str'),
        description=dict(required=False, type='str'),
        tags=dict(required=False, type='str')))

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    wait = module.params['wait']
    waitstate = module.params['waitstate']
    waitdelay = module.params['waitdelay']
    waitretries = module.params['waitretries']
    size = module.params['size']
    name = module.params['name']
    bootable = module.params['bootable']
    imagelist = module.params['imagelist']
    imagelistentry = module.params['imagelistentry']
    description = module.params['description']
    tags = module.params['tags']
    properties = module.params['properties']

    changed = True

    if module.params['action'] == 'create':
        jsonobj = createStorageVolume(endpoint, resourcename, cookie, size,
                                      name, properties, bootable, imagelist,
                                      imagelistentry, description, tags)
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        if wait:
            resourcename = name
            if waitstate is None or waitstate == '':
                waitstate = 'Online'
            waituntil(endpoint, resourcename, cookie, waitstate, waitdelay,
                      waitretries)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listStorageVolumes(endpoint, resourcename, cookie)
        if wait and waitstate is not None and waitstate != '':
            waituntil(endpoint, resourcename, cookie, waitstate, waitdelay,
                      waitretries)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteStorageVolume(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return
def main():
    module = AnsibleModule(
            argument_spec = dict(
                    action         = dict(default='list', choices=['add', 'create', 'list', 'update', 'delete', 'start', 'stop']),
                    endpoint       = dict(required=True, type='str'),
                    user           = dict(required=False, type='str'),
                    password       = dict(required=False, type='str'),
                    cookie         = dict(required=False, type='str'),
                    resourcename   = dict(required=True, type='str'),
                    wait           = dict(required=False, type='bool', default=False),
                    waitstate      = dict(required=False, choices=['ready', 'stopped']),
                    waitdelay      = dict(required=False, type='int', default=10),
                    waitretries    = dict(required=False, type='int', default=120),
                    orchestration  = dict(required=False, type='str')
            )
    )

    endpoint = module.params['endpoint']
    user = module.params['user']
    password = module.params['password']
    cookie = module.params['cookie']
    if cookie is None and user is not None and password is not None:
        cookie = authenticate(endpoint, user, password)
    resourcename = module.params['resourcename']
    wait = module.params['wait']
    waitstate = module.params['waitstate']
    waitdelay = module.params['waitdelay']
    waitretries = module.params['waitretries']
    orchestration = module.params['orchestration']
    if orchestration is not None:
        orchestration = orchestration.replace("'", '"')

    changed = True

    if module.params['action'] == 'create' or module.params['action'] == 'add':
        jsonobj = addOrchestration(endpoint, resourcename, cookie, json.loads(orchestration))
        if 'message' in jsonobj and 'already exists' in jsonobj['message']:
            changed = False
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'list':
        jsonobj = listOrchestrations(endpoint, resourcename, cookie)
        if wait and waitstate is not None and waitstate != '':
            waituntil(endpoint, resourcename, cookie, waitstate, waitdelay, waitretries)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'delete':
        jsonobj = deleteOrchestration(endpoint, resourcename, cookie)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'start':
        jsonobj = startOrchestration(endpoint, resourcename, cookie)
        if 'message' in jsonobj and 'already started' in jsonobj['message']:
            changed = False
        if wait:
#            while jsonobj['status'] != 'ready':
#                time.sleep(5)
#                jsonresp = listOrchestrations(endpoint, resourcename, cookie)
#                jsonobj = jsonresp['result'][0]
            if waitstate is None or waitstate == '':
                waitstate = 'ready'
            waituntil(endpoint, resourcename, cookie, waitstate, waitdelay, waitretries)
        module.exit_json(changed=changed, list=jsonobj)
    elif module.params['action'] == 'stop':
        jsonobj = stopOrchestration(endpoint, resourcename, cookie)
        if 'message' in jsonobj and 'already stopped' in jsonobj['message']:
            changed = False
        if wait:
            while jsonobj['status'] != 'stopped':
                time.sleep(5)
                jsonresp = listOrchestrations(endpoint, resourcename, cookie)
                jsonobj = jsonresp['result'][0]
        module.exit_json(changed=changed, list=jsonobj)
    else:
        module.fail_json(msg="Unknown action")

    return