Ejemplo n.º 1
0
def main():
    module = AnsibleModule(argument_spec=dict(
        name=dict(type='str'),
        location=dict(type='str', choices=LOCATIONS, default='us/las'),
        size=dict(type='int', default=1),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        try:
            (changed) = delete_ipblock(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set IPBlock state: %s' %
                             to_native(e))

    elif state == 'present':
        try:
            (ipblock_dict) = reserve_ipblock(module, ionosenterprise)
            module.exit_json(**ipblock_dict)
        except Exception as e:
            module.fail_json(msg='failed to set IPBlocks state: %s' %
                             to_native(e))
Ejemplo n.º 2
0
def main():
    module = AnsibleModule(argument_spec=dict(
        k8s_cluster_id=dict(type='str'),
        config_file=dict(type='str'),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)
    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'present':
        try:
            (response) = get_config(module, ionosenterprise)
            module.exit_json(response=response)
        except Exception as e:
            module.fail_json(msg='failed to get the k8s cluster config: %s' %
                             to_native(e))
Ejemplo n.º 3
0
def main():
    module = AnsibleModule(
        argument_spec=dict(
            pcc_id=dict(type='str'),
            name=dict(type='str'),
            description=dict(type='str'),
            api_url=dict(type='str', default=None),
            username=dict(
                type='str',
                required=True,
                aliases=['subscription_user'],
                fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])
            ),
            password=dict(
                type='str',
                required=True,
                aliases=['subscription_password'],
                fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                no_log=True
            ),
            wait=dict(type='bool', default=True),
            wait_timeout=dict(type='int', default=600),
            state=dict(type='str', default='present'),
        ),
        supports_check_mode=True
    )
    if not HAS_SDK:
        module.fail_json(msg='ionosenterprise is required for this module, run `pip install ionosenterprise`')

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username, password=password)
    else:
        ionosenterprise = IonosEnterpriseService(
            username=username,
            password=password,
            host_base=api_url
        )

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version, __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'present':
        pass
        if not module.params.get('name'):
            module.fail_json(msg='name parameter is required for a new pcc')
        if not module.params.get('description'):
            module.fail_json(msg='description parameter is required for a new pcc')
        try:
            (pcc_dict_array) = create_pcc(module, ionosenterprise)
            module.exit_json(**pcc_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to set user state: %s' % to_native(e))

    elif state == 'absent':
        if not module.params.get('pcc_id'):
            module.fail_json(msg='pcc_id parameter is required for deleting a pcc.')
        try:
            (changed) = delete_pcc(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set pcc state: %s' % to_native(e))

    elif state == 'update':
        if not module.params.get('pcc_id'):
            module.fail_json(msg='pcc_id parameter is required for updating a pcc.')
        try:
            (changed) = update_pcc(module, ionosenterprise)
            module.exit_json(
                changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set pcc state: %s' % to_native(e))
def main():
    module = AnsibleModule(
        argument_spec=dict(
            nodepool_name=dict(type='str'),
            k8s_cluster_id=dict(type='str'),
            k8s_version=dict(type='str'),
            nodepool_id=dict(type='str'),
            datacenter_id=dict(type='str'),
            lan_ids=dict(type='list', elements='int'),
            node_count=dict(type='int'),
            cpu_family=dict(type='str'),
            cores_count=dict(type='str'),
            ram_size=dict(type='str'),
            availability_zone=dict(type='str'),
            storage_type=dict(type='str'),
            storage_size=dict(type='str'),
            maintenance_window=dict(
                type='dict',
                day_of_the_week=dict(type='int'),
                time=dict(type='int')
            ),
            labels=dict(type='dict'),
            annotations=dict(type='dict'),
            auto_scaling=dict(
                type='dict',
                min_node_count=dict(type='str'),
                max_node_count=dict(type='str')
            ),
            api_url=dict(type='str', default=None),
            username=dict(
                type='str',
                required=True,
                aliases=['subscription_user'],
                fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])
            ),
            password=dict(
                type='str',
                required=True,
                aliases=['subscription_password'],
                fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                no_log=True
            ),
            wait=dict(type='bool', default=True),
            wait_timeout=dict(type='int', default=600),
            state=dict(type='str', default='present'),
        ),
        supports_check_mode=True
    )
    if not HAS_SDK:
        module.fail_json(msg='ionosenterprise is required for this module, run `pip install ionosenterprise`')

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username, password=password)
    else:
        ionosenterprise = IonosEnterpriseService(
            username=username,
            password=password,
            host_base=api_url
        )

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version, __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'present':
        error_message = "%s parameter is required updating a k8s nodepool"
        if not module.params.get('nodepool_name'):
            module.fail_json(msg=error_message % 'nodepool_name')
        if not module.params.get('k8s_cluster_id'):
            module.fail_json(msg=error_message % 'k8s_cluster_id')
        if not module.params.get('datacenter_id'):
            module.fail_json(msg=error_message % 'datacenter_id')
        if not module.params.get('node_count'):
            module.fail_json(msg=error_message % 'node_count')
        if not module.params.get('cpu_family'):
            module.fail_json(msg=error_message % 'cpu_family')
        if not module.params.get('cores_count'):
            module.fail_json(msg=error_message % 'cores_count')
        if not module.params.get('ram_size'):
            module.fail_json(msg=error_message % 'ram_size')
        if not module.params.get('availability_zone'):
            module.fail_json(msg=error_message % 'availability_zone')
        if not module.params.get('storage_type'):
            module.fail_json(msg=error_message % 'storage_type')
        if not module.params.get('storage_size'):
            module.fail_json(msg=error_message % 'storage_size')
        try:
            (k8s_cluster_dict_array) = create_k8s_cluster_nodepool(module, ionosenterprise)
            module.exit_json(**k8s_cluster_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to set k8s cluster nodepool state: %s' % to_native(e))

    elif state == 'absent':
        if not module.params.get('k8s_cluster_id'):
            module.fail_json(msg='k8s_cluster_id parameter is required deleting a k8s nodepool.')
        if not module.params.get('nodepool_id'):
            module.fail_json(msg='nodepool_id parameter is required deleting a k8s nodepool.')

        try:
            (changed) = delete_k8s_cluster_nodepool(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set k8s nodepool state: %s' % to_native(e))

    elif state == 'update':
        if not module.params.get('k8s_cluster_id'):
            module.fail_json(msg='k8s_cluster_id parameter is required updating a nodepool.')
        if not module.params.get('nodepool_id'):
            module.fail_json(msg='nodepool_id parameter is required updating a nodepool.')
        try:
            (changed) = update_k8s_cluster_nodepool(module, ionosenterprise)
            module.exit_json(
                changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set k8s nodepool state: %s' % to_native(e))
Ejemplo n.º 5
0
def main():
    module = AnsibleModule(argument_spec=dict(
        datacenter=dict(type='str'),
        name=dict(type='str'),
        image=dict(type='str'),
        cores=dict(type='int', default=2),
        ram=dict(type='int', default=2048),
        cpu_family=dict(type='str',
                        choices=CPU_FAMILIES,
                        default='AMD_OPTERON'),
        volume_size=dict(type='int', default=10),
        disk_type=dict(type='str', choices=DISK_TYPES, default='HDD'),
        availability_zone=dict(type='str',
                               choices=AVAILABILITY_ZONES,
                               default='AUTO'),
        volume_availability_zone=dict(type='str',
                                      choices=AVAILABILITY_ZONES,
                                      default=None),
        image_password=dict(type='str', default=None, no_log=True),
        ssh_keys=dict(type='list', default=[]),
        bus=dict(type='str', choices=BUS_TYPES, default='VIRTIO'),
        lan=dict(type='raw', required=False),
        nat=dict(type='bool', default=None),
        count=dict(type='int', default=1),
        auto_increment=dict(type='bool', default=True),
        instance_ids=dict(type='list', default=[]),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        location=dict(type='str', choices=LOCATIONS, default='us/las'),
        assign_public_ip=dict(type='bool', default=False),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        remove_boot_volume=dict(type='bool', default=True),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if module.params.get('lan') is not None and not (
            isinstance(module.params.get('lan'), str)
            or isinstance(module.params.get('lan'), int)):
        module.fail_json(msg='lan should either be a string or a number')

    if not HAS_PB_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        if not module.params.get('datacenter'):
            module.fail_json(
                msg=
                'datacenter parameter is required for running or stopping machines.'
            )

        try:
            (changed) = remove_virtual_machine(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set instance state: %s' %
                             to_native(e),
                             exception=traceback.format_exc())

    elif state in ('running', 'stopped'):
        if not module.params.get('datacenter'):
            module.fail_json(
                msg=
                'datacenter parameter is required for running or stopping machines.'
            )
        try:
            (changed) = startstop_machine(module, ionosenterprise, state)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set instance state: %s' %
                             to_native(e),
                             exception=traceback.format_exc())

    elif state == 'present':
        if not module.params.get('name'):
            module.fail_json(msg='name parameter is required for new instance')
        if not module.params.get('image'):
            module.fail_json(
                msg='image parameter is required for new instance')

        if module.check_mode:
            module.exit_json(changed=True)

        try:
            (machine_dict_array) = create_virtual_machine(
                module, ionosenterprise)
            module.exit_json(**machine_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to set instance state: %s' %
                             to_native(e),
                             exception=traceback.format_exc())

    elif state == 'update':
        try:
            (machine_dict_array) = update_server(module, ionosenterprise)
            module.exit_json(**machine_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to update server: %s' % to_native(e),
                             exception=traceback.format_exc())
Ejemplo n.º 6
0
def main():
    module = AnsibleModule(argument_spec=dict(
        datacenter=dict(type='str'),
        volume=dict(type='str'),
        name=dict(type='str', default=''),
        description=dict(type='str', default=''),
        licence_type=dict(type='str', choices=LICENCE_TYPES, default=None),
        cpu_hot_plug=dict(type='bool', default=None),
        cpu_hot_unplug=dict(type='bool', default=None),
        ram_hot_plug=dict(type='bool', default=None),
        ram_hot_unplug=dict(type='bool', default=None),
        nic_hot_plug=dict(type='bool', default=None),
        nic_hot_unplug=dict(type='bool', default=None),
        disc_virtio_hot_plug=dict(type='bool', default=None),
        disc_virtio_hot_unplug=dict(type='bool', default=None),
        disc_scsi_hot_plug=dict(type='bool', default=None),
        disc_scsi_hot_unplug=dict(type='bool', default=None),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        try:
            (changed) = delete_snapshot(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set snapshot state: %s' %
                             to_native(e))

    elif state == 'present':
        if not module.params.get('datacenter'):
            module.fail_json(msg='datacenter parameter is required')
        if not module.params.get('volume'):
            module.fail_json(msg='volume parameter is required')

        try:
            (snapshot_dict) = create_snapshot(module, ionosenterprise)
            module.exit_json(**snapshot_dict)
        except Exception as e:
            module.fail_json(msg='failed to set snapshot state: %s' %
                             to_native(e))

    elif state == 'restore':
        if not module.params.get('datacenter'):
            module.fail_json(msg='datacenter parameter is required')
        if not module.params.get('volume'):
            module.fail_json(msg='volume parameter is required')

        try:
            (changed) = restore_snapshot(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to restore snapshot: %s' %
                             to_native(e))

    elif state == 'update':
        try:
            (snapshot_dict) = update_snapshot(module, ionosenterprise)
            module.exit_json(**snapshot_dict)
        except Exception as e:
            module.fail_json(msg='failed to update snapshot: %s' %
                             to_native(e))
Ejemplo n.º 7
0
def main():
    module = AnsibleModule(argument_spec=dict(
        datacenter=dict(type='str', required=True),
        server=dict(type='str', required=True),
        nic=dict(type='str', required=True),
        name=dict(type='str', required=True),
        protocol=dict(type='str', choices=PROTOCOLS, required=False),
        source_mac=dict(type='str', default=None),
        source_ip=dict(type='str', default=None),
        target_ip=dict(type='str', default=None),
        port_range_start=dict(type='int', default=None),
        port_range_end=dict(type='int', default=None),
        icmp_type=dict(type='int', default=None),
        icmp_code=dict(type='int', default=None),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        try:
            (changed) = delete_firewall_rule(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set firewall rule state: %s' %
                             to_native(e))

    elif state == 'present':
        try:
            (firewall_rule_dict) = create_firewall_rule(
                module, ionosenterprise)
            module.exit_json(**firewall_rule_dict)
        except Exception as e:
            module.fail_json(msg='failed to set firewall rules state: %s' %
                             to_native(e))

    elif state == 'update':
        try:
            (firewall_rule_dict) = update_firewall_rule(
                module, ionosenterprise)
            module.exit_json(**firewall_rule_dict)
        except Exception as e:
            module.fail_json(msg='failed to update firewall rule: %s' %
                             to_native(e))
Ejemplo n.º 8
0
def main():
    module = AnsibleModule(argument_spec=dict(
        datacenter=dict(type='str'),
        server=dict(type='str'),
        name=dict(type='str', default=str(uuid4()).replace('-', '')[:10]),
        lan=dict(type='int', default=None),
        dhcp=dict(type='bool', default=None),
        nat=dict(type='bool', default=None),
        firewall_active=dict(type='bool', default=None),
        ips=dict(type='list', default=None),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    if not module.params.get('datacenter'):
        module.fail_json(msg='datacenter parameter is required')
    if not module.params.get('server'):
        module.fail_json(msg='server parameter is required')

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        if not module.params.get('name'):
            module.fail_json(msg='name parameter is required')

        try:
            (changed) = delete_nic(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set nic state: %s' % to_native(e))

    elif state == 'present':
        if not module.params.get('lan'):
            module.fail_json(msg='lan parameter is required')

        try:
            (nic_dict) = create_nic(module, ionosenterprise)
            module.exit_json(**nic_dict)
        except Exception as e:
            module.fail_json(msg='failed to set nic state: %s' % to_native(e))

    elif state == 'update':
        try:
            (nic_dict) = update_nic(module, ionosenterprise)
            module.exit_json(**nic_dict)
        except Exception as e:
            module.fail_json(msg='failed to update nic: %s' % to_native(e))
def main():
    module = AnsibleModule(argument_spec=dict(
        cluster_name=dict(type='str'),
        k8s_cluster_id=dict(type='str'),
        k8s_version=dict(type='str'),
        maintenance_window=dict(type='dict',
                                day_of_the_week=dict(type='str'),
                                time=dict(type='str')),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)
    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        client = IonosEnterpriseService(username=username, password=password)
    else:
        client = IonosEnterpriseService(username=username,
                                        password=password,
                                        host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    client.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'present':
        if not module.params.get('cluster_name'):
            module.fail_json(
                msg='cluster_name parameter is required for a new k8s cluster')
        try:
            (k8s_cluster_dict_array) = create_k8s_cluster(module, client)
            module.exit_json(**k8s_cluster_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to set k8s cluster state: %s' %
                             to_native(e))

    elif state == 'absent':
        if not module.params.get('k8s_cluster_id'):
            module.fail_json(
                msg=
                'k8s_cluster_id parameter is required for deleting a k8s cluster.'
            )
        try:
            (changed) = delete_k8s_cluster(module, client)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set k8s cluster state: %s' %
                             to_native(e))

    elif state == 'update':
        error_message = "%s parameter is required updating a k8s cluster."
        if not module.params.get('k8s_cluster_id'):
            module.fail_json(msg=error_message % 'k8s_cluster_id')
        if not module.params.get('cluster_name'):
            module.fail_json(msg=error_message % 'cluster_name')
        if not module.params.get('k8s_version'):
            module.fail_json(msg=error_message % 'k8s_version')
        if not module.params.get('maintenance_window'):
            module.fail_json(msg=error_message % 'maintenance_window')

        try:
            (changed) = update_k8s_cluster(module, client)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set k8s cluster state: %s' %
                             to_native(e))
Ejemplo n.º 10
0
def main():
    module = AnsibleModule(argument_spec=dict(
        datacenter=dict(type='str'),
        server=dict(type='str'),
        name=dict(type='str'),
        size=dict(type='int', default=10),
        image=dict(type='str'),
        image_password=dict(type='str', default=None, no_log=True),
        ssh_keys=dict(type='list', default=[]),
        bus=dict(type='str', choices=BUS_TYPES, default='VIRTIO'),
        disk_type=dict(type='str', choices=DISK_TYPES, default='HDD'),
        licence_type=dict(type='str', choices=LICENCE_TYPES,
                          default='UNKNOWN'),
        availability_zone=dict(type='str',
                               choices=AVAILABILITY_ZONES,
                               default=None),
        count=dict(type='int', default=1),
        auto_increment=dict(type='bool', default=True),
        instance_ids=dict(type='list', default=[]),
        api_url=dict(type='str', default=None),
        username=dict(type='str',
                      required=True,
                      aliases=['subscription_user'],
                      fallback=(env_fallback, ['PROFITBRICKS_USERNAME'])),
        password=dict(type='str',
                      required=True,
                      aliases=['subscription_password'],
                      fallback=(env_fallback, ['PROFITBRICKS_PASSWORD']),
                      no_log=True),
        wait=dict(type='bool', default=True),
        wait_timeout=dict(type='int', default=600),
        state=dict(type='str', default='present'),
    ),
                           supports_check_mode=True)

    if not HAS_SDK:
        module.fail_json(
            msg=
            'ionosenterprise is required for this module, run `pip install ionosenterprise`'
        )

    username = module.params.get('username')
    password = module.params.get('password')
    api_url = module.params.get('api_url')

    if not api_url:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password)
    else:
        ionosenterprise = IonosEnterpriseService(username=username,
                                                 password=password,
                                                 host_base=api_url)

    user_agent = 'profitbricks-sdk-python/%s Ansible/%s' % (sdk_version,
                                                            __version__)
    ionosenterprise.headers = {'User-Agent': user_agent}

    state = module.params.get('state')

    if state == 'absent':
        if not module.params.get('datacenter'):
            module.fail_json(
                msg=
                'datacenter parameter is required for creating, updating or deleting volumes.'
            )

        try:
            (changed) = delete_volume(module, ionosenterprise)
            module.exit_json(changed=changed)
        except Exception as e:
            module.fail_json(msg='failed to set volume state: %s' %
                             to_native(e))

    elif state == 'present':
        if not module.params.get('datacenter'):
            module.fail_json(
                msg='datacenter parameter is required for new instance')
        if not module.params.get('name'):
            module.fail_json(msg='name parameter is required for new instance')

        try:
            (volume_dict_array) = create_volume(module, ionosenterprise)
            module.exit_json(**volume_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to set volume state: %s' %
                             to_native(e))

    elif state == 'update':
        try:
            (volume_dict_array) = update_volume(module, ionosenterprise)
            module.exit_json(**volume_dict_array)
        except Exception as e:
            module.fail_json(msg='failed to update volume: %s' % to_native(e))