def main():
    argument_spec = cloudscale_argument_spec()
    argument_spec.update(
        dict(
            name=dict(),
            uuid=dict(),
            type=dict(default='anti-affinity'),
            tags=dict(type='dict'),
            state=dict(default='present', choices=['absent', 'present']),
        ))

    module = AnsibleModule(
        argument_spec=argument_spec,
        required_one_of=(('name', 'uuid'), ),
        supports_check_mode=True,
    )
    cloudscale_server_group = AnsibleCloudscaleServerGroup(
        module, 'cloudscale_server_group')

    if module.params['state'] == 'absent':
        server_group = cloudscale_server_group.absent_group()
    else:
        server_group = cloudscale_server_group.present_group()

    result = cloudscale_server_group.get_result(server_group)
    module.exit_json(**result)
Example #2
0
def main():
    argument_spec = cloudscale_argument_spec()
    argument_spec.update(dict(
        state=dict(default='present', choices=('present', 'absent')),
        name=dict(),
        uuid=dict(),
        zone=dict(),
        size_gb=dict(type='int'),
        type=dict(choices=('ssd', 'bulk')),
        server_uuids=dict(type='list', aliases=['server_uuid']),
        tags=dict(type='dict'),
    ))

    module = AnsibleModule(
        argument_spec=argument_spec,
        required_one_of=(('name', 'uuid'),),
        supports_check_mode=True,
    )

    cloudscale_volume = AnsibleCloudscaleVolume(module)

    if module.params['state'] == 'absent':
        server_group = cloudscale_volume.absent()
    else:
        server_group = cloudscale_volume.present()

    result = cloudscale_volume.get_result(server_group)
    module.exit_json(**result)
Example #3
0
def main():
    argument_spec = cloudscale_argument_spec()
    argument_spec.update(
        dict(
            state=dict(default='present',
                       choices=('present', 'absent'),
                       type='str'),
            ip=dict(aliases=('network', ), type='str'),
            ip_version=dict(choices=(4, 6), type='int'),
            server=dict(type='str'),
            type=dict(type='str',
                      choices=('regional', 'global'),
                      default='regional'),
            region=dict(type='str'),
            prefix_length=dict(choices=(56, ), type='int'),
            reverse_ptr=dict(type='str'),
        ))

    module = AnsibleModule(
        argument_spec=argument_spec,
        required_one_of=(('ip', 'ip_version'), ),
        supports_check_mode=True,
    )

    if not HAS_IPADDRESS:
        module.fail_json(msg=missing_required_lib('ipaddress'),
                         exception=IPADDRESS_IMP_ERR)

    target_state = module.params['state']
    target_server = module.params['server']
    floating_ip = AnsibleCloudscaleFloatingIP(module)
    current_state = floating_ip.info['state']
    current_server = floating_ip.info[
        'server'] if 'server' in floating_ip.info else None

    if module.check_mode:
        module.exit_json(
            changed=not target_state == current_state or
            (current_state == 'present' and current_server != target_server),
            **floating_ip.info)

    changed = False
    if current_state == 'absent' and target_state == 'present':
        floating_ip.request_floating_ip()
        changed = True
    elif current_state == 'present' and target_state == 'absent':
        floating_ip.release_floating_ip()
        changed = True
    elif current_state == 'present' and current_server != target_server:
        floating_ip.update_floating_ip()
        changed = True

    module.exit_json(changed=changed, **floating_ip.info)
def main():
    argument_spec = cloudscale_argument_spec()
    argument_spec.update(
        dict(
            state=dict(default='running', choices=ALLOWED_STATES),
            name=dict(),
            uuid=dict(),
            flavor=dict(),
            image=dict(),
            zone=dict(),
            volume_size_gb=dict(type='int', default=10),
            bulk_volume_size_gb=dict(type='int'),
            ssh_keys=dict(type='list'),
            password=dict(no_log=True),
            use_public_network=dict(type='bool', default=True),
            use_private_network=dict(type='bool', default=False),
            use_ipv6=dict(type='bool', default=True),
            anti_affinity_with=dict(removed_in_version='2.11'),
            server_groups=dict(type='list'),
            user_data=dict(),
            force=dict(type='bool', default=False),
            tags=dict(type='dict'),
        ))

    module = AnsibleModule(
        argument_spec=argument_spec,
        required_one_of=(('name', 'uuid'), ),
        mutually_exclusive=(('anti_affinity_with', 'server_groups'), ),
        supports_check_mode=True,
    )

    cloudscale_server = AnsibleCloudscaleServer(module)
    if module.params['state'] == "absent":
        server = cloudscale_server.absent_server()
    else:
        server = cloudscale_server.present_server()

    result = cloudscale_server.get_result(server)
    module.exit_json(**result)