Пример #1
0
def run_module():

    module_args = dict(
        auth_token = dict(default=os.environ.get('CHERRY_AUTH_TOKEN'),
                          type = 'str',
                          no_log = True),
        state = dict(choices = MODULE_STATES, default = 'present'),
        key_id=dict(type='list', default=None),
        label=dict(type='list', default=None),
        fingerprint=dict(type='list', default=None),
        key=dict(type='list', default=None),
        key_file=dict(type='list', default=None)
    )

    mutually_exclusive=[
        ('key_id', 'label'),
        ('key_id', 'fingerprint'),
        ('label', 'fingerprint'),
        ('key', 'fingerprint'),
        ('key', 'key_id'),
        ('key', 'key_file')
    ]

    result = dict(
        changed=False
    )

    module = AnsibleModule(
        argument_spec=module_args,
        mutually_exclusive = mutually_exclusive,
        supports_check_mode=True
    )

    if not HAS_CHERRYSERVERS_SDK:
        module.fail_json(msg='cherry required for this module')

    if not module.params.get('auth_token'):
        module.fail_json(msg='The "auth_token" parameter or ' +
            'CHERRY_AUTH_TOKEN environment variable is required')

    cherryservers_conn = cherry.Master(auth_token=module.params['auth_token'])

    state = module.params['state']

    if state in 'present':
        (changed, sshkey) = add_ssh_keys(module, cherryservers_conn)
    elif state == 'absent':
        (changed, sshkey) = remove_ssh_keys(module, cherryservers_conn)
    else:
        raise Exception("Unknown state: %s" % state)

    if module.check_mode:
        return result

    result['sshkey'] = sshkey
    result['changed'] = changed

    module.exit_json(**result)
def run_module():

    module_args = dict(
        auth_token=dict(default=os.environ.get('CHERRY_AUTH_TOKEN'),
                        type='str',
                        no_log=True),
        state=dict(choices=MODULE_STATES, default='present'),
        project_id=dict(type='int', default=None),
        storage_volume_id=dict(type='int', default=None),
        size=dict(type='int', default=None),
        description=dict(type='str', default='', required=False),
        attach_to_server_id=dict(type='int', default=None),
        attach_to_server_hostname=dict(type='str', default=None),
        region=dict(type='str', default=None),
    )

    mutually_exclusive = [
        ('size', 'attach_to_id'),
        ('size', 'attach_to_hostname'),
    ]

    result = dict(changed=False)

    module = AnsibleModule(argument_spec=module_args,
                           mutually_exclusive=mutually_exclusive,
                           supports_check_mode=True)

    if not HAS_CHERRYSERVERS_SDK:
        module.fail_json(msg='cherry required for this module')

    if not module.params.get('auth_token'):
        module.fail_json(msg='The "auth_token" parameter or ' +
                         'CHERRY_AUTH_TOKEN environment variable is required')

    cherryservers_conn = cherry.Master(auth_token=module.params['auth_token'])

    state = module.params['state']

    if state in 'present':
        (changed, volume) = request_storage_volume(module, cherryservers_conn)
    elif state == 'absent':
        (changed, volume) = remove_storage_volume(module, cherryservers_conn)
    elif state == 'update':
        (changed, volume) = update_storage_volume(module, cherryservers_conn)
    else:
        raise Exception("Unknown state: %s" % state)

    if module.check_mode:
        return result

    result['volume'] = volume
    result['changed'] = changed

    module.exit_json(**result)
Пример #3
0
def run_module():

    module_args = dict(auth_token=dict(
        default=os.environ.get('CHERRY_AUTH_TOKEN'), type='str', no_log=True),
                       hostname=dict(type='list'),
                       new=dict(type='bool', required=False, default=False),
                       count=dict(type='int', default=1),
                       count_offset=dict(type='int', default=1),
                       image=dict(),
                       plan_id=dict(type='int'),
                       project_id=dict(type='int', required=True),
                       server_id=dict(type='int'),
                       server_ids=dict(type='list'),
                       ip_address=dict(type='list'),
                       ip_address_id=dict(type='list'),
                       region=dict(),
                       ssh_key_id=dict(type='list'),
                       ssh_label=dict(type='list'),
                       state=dict(choices=MODULE_STATES, default='present'),
                       wait_timeout=dict(type='int', default=1800))

    mutually_exclusive = [('hostname', 'server_ids'),
                          ('ssh_key_id', 'ssh_label')]

    required_one_of = [('hostname', 'server_ids', 'server_id')]

    result = dict(changed=False, original_message='', message='')

    module = AnsibleModule(argument_spec=module_args,
                           required_one_of=required_one_of,
                           mutually_exclusive=mutually_exclusive,
                           supports_check_mode=True)

    if not HAS_CHERRYSERVERS_SDK:
        module.fail_json(msg='cherry required for this module')

    if not module.params.get('auth_token'):
        module.fail_json(msg='The "auth_token" parameter or ' +
                         'CHERRY_AUTH_TOKEN environment variable is required')

    cherryservers_conn = cherry.Master(auth_token=module.params['auth_token'])

    state = module.params['state']

    if state in ('present', 'active'):
        (changed, server) = create_multiple_servers(module, cherryservers_conn)

        if state == 'active':
            deploying_servers_ids = []

            if server:
                for srv in server:
                    srv_id = srv['id']
                    deploying_servers_ids.append(srv_id)

            server = wait_for_resource(module, cherryservers_conn,
                                       deploying_servers_ids)

    elif state == 'absent':

        (changed, server) = terminate_multiple_servers(module,
                                                       cherryservers_conn)

    elif state in ('running', 'stopped', 'rebooted'):

        (changed, server) = servers_power(module, cherryservers_conn)

    else:
        raise Exception("Unknown state: %s" % state)

    if module.check_mode:
        return result

    result['server'] = server
    result['changed'] = changed

    module.exit_json(**result)
Пример #4
0
def run_module():

    module_args = dict(auth_token=dict(
        default=os.environ.get('CHERRY_AUTH_TOKEN'), type='str', no_log=True),
                       state=dict(choices=MODULE_STATES, default='present'),
                       project_id=dict(type='int', default=None),
                       type=dict(type='str', default=None),
                       ptr_record=dict(type='str', default=None),
                       a_record=dict(type='str', default=None),
                       assigned_to=dict(type='str', default=None),
                       routed_to=dict(type='str', default=None),
                       routed_to_ip=dict(type='str', default=None),
                       routed_to_hostname=dict(type='str', default=None),
                       routed_to_server_id=dict(type='str', default=None),
                       region=dict(type='str', default=None),
                       ip_address_id=dict(type='list', default=None),
                       ip_address=dict(type='list', default=None),
                       count=dict(type='int', default=1))

    mutually_exclusive = [('routed_to_ip', 'routed_to_hostname'),
                          ('routed_to_ip', 'routed_to_server_id'),
                          ('routed_to_hostname', 'routed_to_server_id'),
                          ('key', 'key_id'), ('key', 'key_file'),
                          ('ip_address_id', 'ip_address')]

    result = dict(changed=False)

    module = AnsibleModule(argument_spec=module_args,
                           mutually_exclusive=mutually_exclusive,
                           supports_check_mode=True)

    if not HAS_CHERRYSERVERS_SDK:
        module.fail_json(msg='cherry required for this module')

    if not module.params.get('auth_token'):
        module.fail_json(msg='The "auth_token" parameter or ' +
                         'CHERRY_AUTH_TOKEN environment variable is required')

    cherryservers_conn = cherry.Master(auth_token=module.params['auth_token'])

    state = module.params['state']

    if state in 'present':

        (changed, ip) = add_multiple_ip_addresses(module, cherryservers_conn)
    elif state == 'absent':

        if not (module.params['ip_address'] or module.params['ip_address_id']):
            module.fail_json(
                msg=
                "one of the following is required: ip_address_id, ip_address")

        (changed, ip) = remove_multiple_ip_addresses(module,
                                                     cherryservers_conn)
    elif state == 'update':

        if not (module.params['ip_address'] or module.params['ip_address_id']):
            module.fail_json(
                msg=
                "one of the following is required: ip_address_id, ip_address")

        (changed, ip) = update_multiple_ip_addresses(module,
                                                     cherryservers_conn)
    else:
        raise Exception("Unknown state: %s" % state)

    if module.check_mode:
        return result

    result['ip_address'] = ip
    result['changed'] = changed

    module.exit_json(**result)