Beispiel #1
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        compartment_id=dict(type="str", required=False),
        display_name=dict(type="str", required=False, aliases=["name"]),
        vcn_id=dict(type="str", required=False),
        rt_id=dict(type="str", required=False, aliases=["id"]),
        state=dict(type="str",
                   required=False,
                   default="present",
                   choices=["present", "absent"]),
        route_rules=dict(type=list, required=False),
        purge_route_rules=dict(type="bool", required=False, default=True),
        delete_route_rules=dict(type="bool", required=False, default=False),
    )
    module = AnsibleModule(
        argument_spec=module_args,
        mutually_exclusive=[["purge_route_rules", "delete_route_rules"]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)

    state = module.params["state"]

    if state == "present":
        result = create_or_update_route_table(virtual_network_client, module)
    elif state == "absent":
        result = delete_route_table(virtual_network_client, module)

    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             vcn_id=dict(type='str', required=False),
             dhcp_id=dict(type='str', required=False, aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['present', 'absent']),
             options=dict(type=list, required=False),
             purge_dhcp_options=dict(type='bool', required=False,
                                     default=True)))
    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    oci_config = oci_utils.get_oci_config(module)
    virtual_network_client = VirtualNetworkClient(oci_config)
    state = module.params['state']

    if state == 'present':
        result = create_or_update_dhcp_options(virtual_network_client, module)
    elif state == 'absent':
        result = delete_dhcp_options(virtual_network_client, module)

    module.exit_json(**result)
Beispiel #3
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             vcn_id=dict(type='str', required=False),
             ig_id=dict(type='str', required=False, aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['present', 'absent']),
             is_enabled=dict(type='bool', required=False,
                             aliases=['enabled'])))
    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)
    state = module.params['state']

    if state == 'present':
        result = create_or_update_internet_gateway(virtual_network_client,
                                                   module)
    elif state == 'absent':
        result = delete_internet_gateway(virtual_network_client, module)

    module.exit_json(**result)
Beispiel #4
0
def main():
    logger = oci_utils.get_logger("oci_file_system")
    set_logger(logger)

    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(
            compartment_id=dict(type="str", required=False),
            availability_domain=dict(type="str", required=False),
            file_system_id=dict(type="str", required=False, aliases=["id"]),
            display_name=dict(type="str", required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent"],
            ),
        ))

    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    file_storage_client = oci_utils.create_service_client(
        module, FileStorageClient)
    state = module.params["state"]

    if state == "present":
        result = create_or_update_file_system(file_storage_client, module)
    elif state == "absent":
        result = delete_file_system(file_storage_client, module)

    module.exit_json(**result)
Beispiel #5
0
def main():
    logger = oci_utils.get_logger("oci_snapshot")
    set_logger(logger)

    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(file_system_id=dict(type='str', required=False),
             name=dict(type='str', required=False),
             snapshot_id=dict(type='str', required=False, aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['present', 'absent'])))

    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    file_storage_client = oci_utils.create_service_client(
        module, FileStorageClient)
    state = module.params['state']

    if state == 'present':
        result = create_or_update_snapshot(file_storage_client, module)
    elif state == 'absent':
        result = delete_snapshot(file_storage_client, module)

    module.exit_json(**result)
Beispiel #6
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(name=dict(type='str', required=False),
             user_id=dict(type='str', required=False, aliases=['id']),
             description=dict(type='str', required=False, default=''),
             user_groups=dict(type='list', required=False),
             blocked=dict(type='str', required=False, choices=['yes', 'no']),
             create_or_reset_ui_password=dict(type='bool',
                                              required=False,
                                              default=False),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['present', 'absent']),
             purge_group_memberships=dict(type='bool',
                                          required=False,
                                          default=False),
             force=dict(type='bool', required=False, default=False)))
    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    oci_config = oci_utils.get_oci_config(module)
    identity_client = IdentityClient(oci_config)
    compartment_id = oci_config['tenancy']
    module.params.update(dict({'compartment_id': compartment_id}))
    state = module.params['state']
    if state == 'present':
        result = create_or_update_user(identity_client, module)
    elif state == 'absent':
        result = delete_user(identity_client, module)

    module.exit_json(**result)
Beispiel #7
0
def main():
    logger = oci_utils.get_logger("oci_database")
    set_logger(logger)
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(
            database_id=dict(type="str", required=True, aliases=["id"]),
            database_scn=dict(type="str", required=False),
            latest=dict(type=bool, required=False),
            timestamp=dict(type="str", required=False),
            db_backup_config=dict(type=dict, required=False),
            state=dict(
                type="str",
                required=False,
                default="update",
                choices=["restore", "update"],
            ),
        )
    )

    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    db_client = oci_utils.create_service_client(module, DatabaseClient)
    state = module.params["state"]
    if state == "restore":
        result = restore_database(db_client, module)
    elif state == "update":
        result = update_database(db_client, module)

    module.exit_json(**result)
def main():
    logger = oci_utils.get_logger("oci_database")
    set_logger(logger)
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(dict(
        database_id=dict(type='str', required=True, aliases=['id']),
        database_scn=dict(type='str', required=False),
        latest=dict(type=bool, required=False),
        timestamp=dict(type='str', required=False),
        db_backup_config=dict(type=dict, required=False),
        state=dict(type='str', required=False, default='update', choices=['restore', 'update'])
    ))

    module = AnsibleModule(
        argument_spec=module_args
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    db_client = DatabaseClient(oci_utils.get_oci_config(module))
    state = module.params['state']
    if state == 'restore':
        result = restore_database(db_client, module)
    elif state == 'update':
        result = update_database(db_client, module)

    module.exit_json(**result)
Beispiel #9
0
def main():
    logger = oci_utils.get_logger("oci_volume_backup")
    set_logger(logger)
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(display_name=dict(type='str', required=False, aliases=['name']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             type=dict(type='str',
                       required=False,
                       default='INCREMENTAL',
                       choices=['FULL', 'INCREMENTAL']),
             volume_backup_id=dict(type='str', required=False, aliases=['id']),
             volume_id=dict(type='str', required=False)))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        required_if=[['state', 'absent', ['volume_backup_id']]])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    config = oci_utils.get_oci_config(module)
    block_storage_client = BlockstorageClient(config)

    state = module.params['state']
    volume_backup_id = module.params['volume_backup_id']

    if state == 'absent':
        result = delete_volume_backup(block_storage_client, module)

    else:
        if volume_backup_id is None:
            # Get compartment_id of volume to list all the volume backups of the volume in that compartment.
            compartment_id = block_storage_client.get_volume(
                module.params['volume_id']).data.compartment_id
            result = oci_utils.check_and_create_resource(
                resource_type='volume_backup',
                create_fn=create_volume_backup,
                kwargs_create={
                    'block_storage_client': block_storage_client,
                    'module': module
                },
                list_fn=block_storage_client.list_volume_backups,
                kwargs_list={
                    'compartment_id': compartment_id,
                    'volume_id': module.params['volume_id']
                },
                module=module,
                model=CreateVolumeBackupDetails(),
                exclude_attributes={'display_name': True})
        else:
            result = update_volume_backup(block_storage_client, module)

    module.exit_json(**result)
Beispiel #10
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(instance_id=dict(type='str', required=False),
             public_key=dict(type='str', required=False),
             instance_console_connection_id=dict(type='str',
                                                 required=False,
                                                 aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present'])))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=['instance_console_connection_id', 'instance_id'],
        required_if=[('state', 'absent', ['instance_console_connection_id']),
                     ('state', 'present', ['instance_id', 'public_key'])])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    compute_client = oci_utils.create_service_client(module, ComputeClient)

    state = module.params['state']

    if state == 'absent':
        result = delete_instance_console_connection(compute_client, module)

    else:
        # Replace value of `public_key` key by content of file pointed to by the `public_key` param
        module.params["public_key"] = get_file_content(
            module.params['public_key'])

        instance_id = module.params['instance_id']
        kwargs_list = {
            'instance_id':
            instance_id,
            'compartment_id':
            _get_compartment_of_instance(compute_client, instance_id)
        }

        result = oci_utils.check_and_create_resource(
            resource_type='instance_console_connection',
            create_fn=create_instance_console_connection,
            kwargs_create={
                'compute_client': compute_client,
                'module': module
            },
            list_fn=compute_client.list_instance_console_connections,
            kwargs_list=kwargs_list,
            module=module,
            model=CreateInstanceConsoleConnectionDetails(),
            exclude_attributes=None)
    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(instance_id=dict(type='str', required=False),
             name=dict(type='str', required=False, aliases=['display_name']),
             instance_console_history_id=dict(type='str',
                                              required=False,
                                              aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present'])))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=['console_history_id', 'instance_id'],
        required_if=[('state', 'absent', ['instance_console_history_id'])])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    compute_client = oci_utils.create_service_client(module, ComputeClient)

    state = module.params['state']

    if state == 'absent':
        result = delete_console_history(compute_client, module)

    else:
        console_history_id = module.params['instance_console_history_id']
        if console_history_id is not None:
            # Update service gateway details.
            result = update_console_history(compute_client, module)
        else:
            instance_id = module.params['instance_id']

            kwargs_list = {
                'instance_id':
                instance_id,
                'compartment_id':
                _get_compartment_of_instance(compute_client, instance_id)
            }

            result = oci_utils.check_and_create_resource(
                resource_type='console_history',
                create_fn=capture_console_history,
                kwargs_create={
                    'compute_client': compute_client,
                    'module': module
                },
                list_fn=compute_client.list_console_histories,
                kwargs_list=kwargs_list,
                module=module,
                model=CaptureConsoleHistoryDetails())
    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(
            compartment_id=dict(type="str", required=False),
            description=dict(type="str", required=False),
            name=dict(type="str", required=False),
            policy_document=dict(type="str", required=False),
            policy_id=dict(type="str", required=False, aliases=["id"]),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["absent", "present"],
            ),
            statements=dict(type="list", required=False),
            version_date=dict(type="datetime", required=False),
        ))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=[["policy_document", "statements"]],
        required_if=[["state", "absent", ["policy_id"]]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module.")

    identity_client = oci_utils.create_service_client(module, IdentityClient)
    state = module.params["state"]
    policy_id = module.params["policy_id"]
    exclude_attributes = {"version_date": True}
    if state == "absent":
        result = delete_policy(identity_client, module)

    else:
        if policy_id is not None:
            result = update_policy(identity_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type="policy",
                create_fn=create_policy,
                kwargs_create={
                    "identity_client": identity_client,
                    "module": module
                },
                list_fn=identity_client.list_policies,
                kwargs_list={
                    "compartment_id": module.params["compartment_id"]
                },
                module=module,
                model=CreatePolicyDetails(),
                exclude_attributes=exclude_attributes,
            )

    module.exit_json(**result)
Beispiel #13
0
def main():
    my_logger = oci_utils.get_logger(RESOURCE_NAME)
    set_logger(my_logger)

    module_args = oci_utils.get_taggable_arg_spec(supports_create=True, supports_wait=True)
    module_args.update(dict(
        compartment_id=dict(type='str', required=False),
        display_name=dict(type='str', required=False, aliases=['name']),
        instance_configuration_id=dict(type='str', required=False),
        placement_configurations=dict(type='list', required=False),
        instance_pool_id=dict(type='str', required=False, aliases=['id']),
        size=dict(type='int', required=False),
        state=dict(type='str', required=False, default='present', choices=['absent', 'present', 'running', 'reset',
                                                                           'softreset', 'stopped']))
    )

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=['instance_pool_id', 'compartment_id'],
        required_if=[('state', 'absent', ['instance_pool_id'])]
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    compute_management_client = oci_utils.create_service_client(module, ComputeManagementClient)

    state = module.params['state']

    if state == 'absent':
        result = delete_instance_pool(compute_management_client, module)

    elif state == 'present':
        instance_pool_id = module.params['instance_pool_id']

        if instance_pool_id is None:
            kwargs_list = {'compartment_id': module.params['compartment_id']}
            result = oci_utils.check_and_create_resource(resource_type=RESOURCE_NAME,
                                                         create_fn=create_instance_pool,
                                                         kwargs_create={
                                                             'compute_management_client': compute_management_client,
                                                             'module': module},
                                                         list_fn=compute_management_client.list_instance_pools,
                                                         kwargs_list=kwargs_list,
                                                         module=module,
                                                         model=CreateInstancePoolDetails(),
                                                         exclude_attributes=None,
                                                         supports_sort_by_time_created=False
                                                         )
        else:
            result = update_instance_pool(compute_management_client, module)
    else:
        # one of the power actions
        result = power_action_on_instance_pool(compute_management_client, module)

    module.exit_json(**result)
Beispiel #14
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(
            block_traffic=dict(type="bool", required=False, default=False),
            vcn_id=dict(type="str", required=False),
            compartment_id=dict(type="str", required=False),
            display_name=dict(type="str", required=False, aliases=["name"]),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["absent", "present"],
            ),
            nat_gateway_id=dict(type="str", required=False, aliases=["id"]),
        ))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        required_if=[("state", "absent", ["nat_gateway_id"])],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module.")

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)

    exclude_attributes = {"display_name": True}
    state = module.params["state"]

    if state == "absent":
        result = delete_nat_gateway(virtual_network_client, module)

    else:
        if module.params["nat_gateway_id"] is not None:
            result = update_nat_gateway(virtual_network_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type="nat_gateway",
                create_fn=create_nat_gateway,
                kwargs_create={
                    "virtual_network_client": virtual_network_client,
                    "module": module,
                },
                list_fn=virtual_network_client.list_nat_gateways,
                kwargs_list={
                    "compartment_id": module.params["compartment_id"],
                    "vcn_id": module.params["vcn_id"],
                },
                module=module,
                model=CreateNatGatewayDetails(),
                exclude_attributes=exclude_attributes,
            )
    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec()
    module_args.update(
        dict(hostname_label=dict(type='str', required=False),
             ip_address=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             vnic_id=dict(type='str', required=False),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             private_ip_id=dict(type='str', required=False, aliases=['id'])))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False,
                           required_if=[('state', 'absent', ['private_ip_id'])
                                        ])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)

    state = module.params['state']
    private_ip_id = module.params['private_ip_id']

    if state == 'absent':
        result = delete_private_ip(virtual_network_client, module)

    else:
        if private_ip_id is not None:
            result = update_private_ip(virtual_network_client, module)
        else:
            # Exclude ip_address & display_name when matching private_ips if they are not explicitly specified by user.
            exclude_attributes = {'display_name': True, 'ip_address': True}
            subnet_id = oci_utils.call_with_backoff(
                virtual_network_client.get_vnic,
                vnic_id=module.params['vnic_id']).data.subnet_id
            result = oci_utils.check_and_create_resource(
                resource_type='private_ip',
                create_fn=create_private_ip,
                kwargs_create={
                    'virtual_network_client': virtual_network_client,
                    'module': module
                },
                list_fn=virtual_network_client.list_private_ips,
                kwargs_list={
                    "vnic_id": module.params['vnic_id'],
                    "subnet_id": subnet_id
                },
                module=module,
                model=CreatePrivateIpDetails(),
                exclude_attributes=exclude_attributes)

    module.exit_json(**result)
Beispiel #16
0
def main():
    logger = oci_utils.get_logger("oci_autonomous_data_warehouse")
    set_logger(logger)

    module_args = oci_utils.get_taggable_arg_spec(
        supports_create=True, supports_wait=True
    )
    module_args.update(
        dict(
            compartment_id=dict(type="str", required=False),
            admin_password=dict(type="str", required=False, no_log=True),
            autonomous_data_warehouse_id=dict(
                type="str", required=False, aliases=["id"]
            ),
            cpu_core_count=dict(type=int, required=False),
            data_storage_size_in_tbs=dict(type=int, required=False),
            db_name=dict(type="str", required=False),
            display_name=dict(type="str", required=False),
            license_model=dict(
                type="str",
                required=False,
                choices=["LICENSE_INCLUDED", "BRING_YOUR_OWN_LICENSE"],
            ),
            timestamp=dict(type="str", required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent", "restore", "start", "stop"],
            ),
        )
    )

    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    db_client = oci_utils.create_service_client(module, DatabaseClient)
    if os.environ.get("OCI_DB_MOCK") is not None:
        db_client.base_client.session.headers.update(
            {"opc-host-serial": "FakeHostSerial"}
        )
    state = module.params["state"]

    if state == "present":
        result = create_or_update_autonomous_data_warehouse(db_client, module)
    elif state == "absent":
        result = delete_autonomous_data_warehouse(db_client, module)
    elif state == "restore":
        result = restore_autonomous_data_warehouse(db_client, module)
    else:
        result = start_or_stop_autonomous_data_warehouse(db_client, module)

    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             ipsc_id=dict(type='str', required=False, aliases=['id']),
             cpe_id=dict(type='str', required=False),
             drg_id=dict(type='str', required=False),
             static_routes=dict(type='list', required=False)))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False,
                           required_if=[('state', 'absent', ['ipsc_id'])])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)

    exclude_attributes = {'display_name': True}
    state = module.params['state']

    if state == 'absent':
        result = delete_ip_sec_connection(virtual_network_client, module)

    else:
        ip_sec_connection_id = module.params['ipsc_id']
        if ip_sec_connection_id is not None:
            result = update_ip_sec_connection(virtual_network_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type='ip_sec_connection',
                create_fn=create_ip_sec_connection,
                kwargs_create={
                    'virtual_network_client': virtual_network_client,
                    'module': module
                },
                list_fn=virtual_network_client.list_ip_sec_connections,
                kwargs_list={
                    'compartment_id': module.params['compartment_id'],
                    'drg_id': module.params['drg_id'],
                    'cpe_id': module.params['cpe_id']
                },
                module=module,
                model=CreateIPSecConnectionDetails(),
                exclude_attributes=exclude_attributes)

    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(cidr_block=dict(type='str', required=False),
             compartment_id=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             dns_label=dict(type='str', required=False),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             vcn_id=dict(type='str', required=False, aliases=['id'])))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False,
                           mutually_exclusive=[['compartment_id', 'vcn_id']])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    config = oci_utils.get_oci_config(module)
    virtual_network_client = VirtualNetworkClient(config)
    exclude_attributes = {'display_name': True, 'dns_label': True}
    state = module.params['state']
    vcn_id = module.params['vcn_id']

    if state == 'absent':
        if vcn_id is not None:
            result = delete_vcn(virtual_network_client, module)
        else:
            module.fail_json(
                msg="Specify vcn_id with state as 'absent' to delete a VCN.")

    else:
        if vcn_id is not None:
            result = update_vcn(virtual_network_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type='vcn',
                create_fn=create_vcn,
                kwargs_create={
                    'virtual_network_client': virtual_network_client,
                    'module': module
                },
                list_fn=virtual_network_client.list_vcns,
                kwargs_list={
                    'compartment_id': module.params['compartment_id']
                },
                module=module,
                model=CreateVcnDetails(),
                exclude_attributes=exclude_attributes)

    module.exit_json(**result)
Beispiel #19
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(availability_domain=dict(type='str', required=False),
             compartment_id=dict(type='str', required=False),
             volume_group_id=dict(type='str', required=False, aliases=['id']),
             display_name=dict(type='str', required=False, aliases=['name']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             volume_ids=dict(type='list', required=False),
             source_details=dict(type='dict', required=False)))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        required_if=[['state', 'absent', ['volume_group_id']]],
        mutually_exclusive=[['volume_ids', 'source_details']])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    block_storage_client = oci_utils.create_service_client(
        module, BlockstorageClient)

    state = module.params['state']
    volume_group_id = module.params['volume_group_id']

    if state == 'absent':
        result = handle_delete_volume_group(block_storage_client, module)

    else:
        if volume_group_id is None:
            result = oci_utils.check_and_create_resource(
                resource_type='volume_group',
                create_fn=handle_create_volume_group,
                kwargs_create={
                    'block_storage_client': block_storage_client,
                    'module': module
                },
                list_fn=block_storage_client.list_volume_groups,
                kwargs_list={
                    'compartment_id': module.params['compartment_id'],
                    'availability_domain': module.params['availability_domain']
                },
                module=module,
                model=CreateVolumeGroupDetails())

        else:
            result = handle_update_volume_group(block_storage_client, module)

    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             description=dict(type='str', required=False),
             name=dict(type='str', required=False),
             policy_document=dict(type='str', required=False),
             policy_id=dict(type='str', required=False, aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             statements=dict(type='list', required=False),
             version_date=dict(type='datetime', required=False)))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=[['policy_document', 'statements']],
        required_if=[['state', 'absent', ['policy_id']]])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    config = oci_utils.get_oci_config(module)
    identity_client = IdentityClient(config)
    state = module.params['state']
    policy_id = module.params['policy_id']
    exclude_attributes = {'version_date': True}
    if state == 'absent':
        result = delete_policy(identity_client, module)

    else:
        if policy_id is not None:
            result = update_policy(identity_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type='policy',
                create_fn=create_policy,
                kwargs_create={
                    'identity_client': identity_client,
                    'module': module
                },
                list_fn=identity_client.list_policies,
                kwargs_list={
                    "compartment_id": module.params['compartment_id']
                },
                module=module,
                model=CreatePolicyDetails(),
                exclude_attributes=exclude_attributes)

    module.exit_json(**result)
def main():
    logger = oci_utils.get_logger("oci_bucket")
    set_logger(logger)
    module_args = oci_utils.get_taggable_arg_spec()
    module_args.update(
        dict(
            namespace_name=dict(type="str", required=True),
            compartment_id=dict(type="str", required=False),
            name=dict(type="str", required=True),
            public_access_type=dict(
                type="str",
                required=False,
                default="NoPublicAccess",
                choices=[
                    "NoPublicAccess", "ObjectRead", "ObjectReadWithoutList"
                ],
            ),
            metadata=dict(type="dict", default={}),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent"],
            ),
            storage_tier=dict(
                type="str",
                required=False,
                default="Standard",
                choices=["Standard", "Archive"],
            ),
            kms_key_id=dict(type="str", required=False),
            force=dict(type="bool", required=False, default=False),
        ))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    object_storage_client = oci_utils.create_service_client(
        module, ObjectStorageClient)
    state = module.params["state"]
    if state == "present":
        result = create_or_update_bucket(object_storage_client, module)
    elif state == "absent":
        result = delete_bucket(object_storage_client, module)

    module.exit_json(**result)
Beispiel #22
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             description=dict(type='str', required=False),
             matching_rule=dict(type='str', required=False),
             name=dict(type='str', required=False),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             dynamic_group_id=dict(type='str', required=False,
                                   aliases=['id'])))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False,
                           required_if=[('state', 'absent',
                                         ['dynamic_group_id'])])

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    identity_client = oci_utils.create_service_client(module, IdentityClient)

    state = module.params['state']
    dynamic_group_id = module.params['dynamic_group_id']

    if state == 'absent':
        result = delete_dynamic_group(identity_client, module)

    else:
        if dynamic_group_id is not None:
            result = update_dynamic_group(identity_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type='dynamic_group',
                create_fn=create_dynamic_group,
                kwargs_create={
                    'identity_client': identity_client,
                    'module': module
                },
                list_fn=identity_client.list_dynamic_groups,
                kwargs_list={
                    "compartment_id": module.params['compartment_id']
                },
                module=module,
                model=CreateDynamicGroupDetails(),
            )
    module.exit_json(**result)
def main():
    logger = oci_utils.get_logger("oci_autonomous_database")
    set_logger(logger)

    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=False),
             admin_password=dict(type='str', required=False, no_log=True),
             autonomous_database_id=dict(type='str',
                                         required=False,
                                         aliases=['id']),
             cpu_core_count=dict(type=int, required=False),
             data_storage_size_in_tbs=dict(type=int, required=False),
             db_name=dict(type='str', required=False),
             display_name=dict(type='str', required=False),
             license_model=dict(
                 type='str',
                 required=False,
                 choices=['LICENSE_INCLUDED', 'BRING_YOUR_OWN_LICENSE']),
             timestamp=dict(type='str', required=False),
             state=dict(
                 type='str',
                 required=False,
                 default='present',
                 choices=['present', 'absent', 'restore', 'start', 'stop'])))

    module = AnsibleModule(argument_spec=module_args)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module')

    db_client = oci_utils.create_service_client(module, DatabaseClient)
    if os.environ.get('OCI_DB_MOCK') is not None:
        db_client.base_client.session.headers.update(
            {'opc-host-serial': 'FakeHostSerial'})
    state = module.params['state']

    if state == 'present':
        result = create_or_update_autonomous_database(db_client, module)
    elif state == 'absent':
        result = delete_autonomous_database(db_client, module)
    elif state == 'restore':
        result = restore_autonomous_database(db_client, module)
    else:
        result = start_or_stop_autonomous_database(db_client, module)

    module.exit_json(**result)
Beispiel #24
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(
            name=dict(type="str", required=False),
            user_id=dict(type="str", required=False, aliases=["id"]),
            description=dict(type="str", required=False, default=""),
            user_groups=dict(type="list", required=False),
            blocked=dict(type="str", required=False, choices=["yes", "no"]),
            create_or_reset_ui_password=dict(type="bool",
                                             required=False,
                                             default=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent"],
            ),
            purge_group_memberships=dict(type="bool",
                                         required=False,
                                         default=False),
            delete_group_memberships=dict(type="bool",
                                          required=False,
                                          default=False),
            force=dict(type="bool", required=False, default=False),
        ))
    module = AnsibleModule(
        argument_spec=module_args,
        mutually_exclusive=[[
            "purge_group_memberships", "delete_group_memberships"
        ]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    oci_config = oci_utils.get_oci_config(module)
    identity_client = oci_utils.create_service_client(module, IdentityClient)

    compartment_id = oci_config["tenancy"]
    module.params.update(dict({"compartment_id": compartment_id}))
    state = module.params["state"]
    if state == "present":
        result = create_or_update_user(identity_client, module)
    elif state == "absent":
        result = delete_user(identity_client, module)

    module.exit_json(**result)
Beispiel #25
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_wait=True)
    module_args.update(
        dict(compartment_id=dict(type='str', required=True),
             name=dict(type='str', required=False),
             description=dict(type='str', required=False),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['present'])))

    module = AnsibleModule(argument_spec=module_args,
                           supports_check_mode=False)

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    config = oci_utils.get_oci_config(module)
    identity_client = IdentityClient(config)

    compartment_id = module.params['compartment_id']

    tenancy = None
    try:
        tenancy = oci_utils.call_with_backoff(identity_client.get_tenancy,
                                              tenancy_id=compartment_id).data
    except ServiceError:
        pass

    # Check if the provided compartment_id is OCID of a tenancy(root compartment). If tenancy OCID is provided, it's
    # supposed to be a call to create compartment in the tenancy else it's a call to update compartment.
    if tenancy is not None:
        result = oci_utils.check_and_create_resource(
            resource_type='compartment',
            create_fn=create_compartment,
            kwargs_create={
                'identity_client': identity_client,
                'module': module
            },
            list_fn=identity_client.list_compartments,
            kwargs_list={"compartment_id": module.params['compartment_id']},
            module=module,
            model=CreateCompartmentDetails())
    else:
        result = update_compartment(identity_client, module)
    module.exit_json(**result)
Beispiel #26
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(
            cidr_block=dict(type="str", required=False),
            compartment_id=dict(type="str", required=False),
            display_name=dict(type="str", required=False, aliases=["name"]),
            dns_label=dict(type="str", required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["absent", "present"],
            ),
            vcn_id=dict(type="str", required=False, aliases=["id"]),
        ))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True,
        mutually_exclusive=[["compartment_id", "vcn_id"]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module.")

    resource_helper = ResourceHelper(module=module,
                                     resource_type="vcn",
                                     service_client_class=VirtualNetworkClient)

    result = dict(changed=False)

    if resource_helper.is_delete():
        result = resource_helper.delete()
    elif resource_helper.is_update():
        result = resource_helper.update()
    elif resource_helper.is_create():
        result = resource_helper.create()
    elif resource_helper.is_action():
        result = resource_helper.perform_action(module.params.get("state"))

    module.exit_json(**result)
Beispiel #27
0
def main():
    logger = oci_utils.get_logger("oci_load_balancer")
    set_logger(logger)
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(
            compartment_id=dict(type="str", required=False),
            display_name=dict(type="str", required=False, aliases=["name"]),
            load_balancer_id=dict(type="str", required=False, aliases=["id"]),
            backend_sets=dict(type=dict, required=False),
            certificates=dict(type=dict, required=False),
            listeners=dict(type=dict, required=False),
            hostnames=dict(type=dict, required=False),
            shape_name=dict(type="str", required=False),
            subnet_ids=dict(type=list, required=False),
            path_route_sets=dict(type=dict, required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent"],
            ),
            is_private=dict(type="bool", required=False, default=False),
        ))

    module = AnsibleModule(
        argument_spec=module_args,
        mutually_exclusive=[["compartment_id", "load_balancer_id"]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module")

    lb_client = oci_utils.create_service_client(module, LoadBalancerClient)
    state = module.params["state"]

    if state == "present":
        result = create_or_update_lb(lb_client, module)
    elif state == "absent":
        result = delete_load_balancer(lb_client, module)

    module.exit_json(**result)
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(availability_domain=dict(type='str', required=False),
             cidr_block=dict(type='str', required=False),
             compartment_id=dict(type='str', required=False),
             dhcp_options_id=dict(type='str', required=False),
             display_name=dict(type='str', required=False, aliases=['name']),
             dns_label=dict(type='str', required=False),
             prohibit_public_ip_on_vnic=dict(type='bool',
                                             required=False,
                                             default=False),
             route_table_id=dict(type='str', required=False),
             security_list_ids=dict(type='list', required=False),
             subnet_id=dict(type='str', required=False, aliases=['id']),
             state=dict(type='str',
                        required=False,
                        default='present',
                        choices=['absent', 'present']),
             vcn_id=dict(type='str', required=False)))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg='oci python sdk required for this module.')

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)
    exclude_attributes = {
        'display_name': True,
        'dns_label': True,
        'dhcp_options_id': True
    }
    state = module.params['state']
    subnet_id = module.params['subnet_id']

    if state == 'absent':
        if subnet_id is not None:
            result = delete_subnet(virtual_network_client, module)
        else:
            module.fail_json(
                msg=
                "Specify subnet_id with state as 'absent' to delete a subnet.")

    else:
        if subnet_id is not None:
            result = update_subnet(virtual_network_client, module)
        else:
            vcn = oci_utils.call_with_backoff(
                virtual_network_client.get_vcn,
                vcn_id=module.params["vcn_id"]).data

            default_attribute_values = {
                "dhcp_options_id": vcn.default_dhcp_options_id,
                "prohibit_public_ip_on_vnic": False,
                "route_table_id": vcn.default_route_table_id,
                "security_list_ids": [vcn.default_security_list_id]
            }

            result = oci_utils.check_and_create_resource(
                resource_type='subnet',
                create_fn=create_subnet,
                kwargs_create={
                    'virtual_network_client': virtual_network_client,
                    'module': module
                },
                list_fn=virtual_network_client.list_subnets,
                kwargs_list={
                    'compartment_id': module.params['compartment_id'],
                    'vcn_id': module.params['vcn_id']
                },
                module=module,
                model=CreateSubnetDetails(),
                exclude_attributes=exclude_attributes,
                default_attribute_values=default_attribute_values)

    module.exit_json(**result)
Beispiel #29
0
def main():
    module_args = oci_utils.get_taggable_arg_spec(supports_create=True,
                                                  supports_wait=True)
    module_args.update(
        dict(
            cidr_block=dict(type="str", required=False),
            compartment_id=dict(type="str", required=False),
            display_name=dict(type="str", required=False, aliases=["name"]),
            dns_label=dict(type="str", required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["absent", "present"],
            ),
            vcn_id=dict(type="str", required=False, aliases=["id"]),
        ))

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=[["compartment_id", "vcn_id"]],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module.")

    virtual_network_client = oci_utils.create_service_client(
        module, VirtualNetworkClient)

    exclude_attributes = {"display_name": True, "dns_label": True}
    state = module.params["state"]
    vcn_id = module.params["vcn_id"]

    if state == "absent":
        if vcn_id is not None:
            result = delete_vcn(virtual_network_client, module)
        else:
            module.fail_json(
                msg="Specify vcn_id with state as 'absent' to delete a VCN.")

    else:
        if vcn_id is not None:
            result = update_vcn(virtual_network_client, module)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type="vcn",
                create_fn=create_vcn,
                kwargs_create={
                    "virtual_network_client": virtual_network_client,
                    "module": module,
                },
                list_fn=virtual_network_client.list_vcns,
                kwargs_list={
                    "compartment_id": module.params["compartment_id"]
                },
                module=module,
                model=CreateVcnDetails(),
                exclude_attributes=exclude_attributes,
            )

    module.exit_json(**result)
Beispiel #30
0
def main():
    my_logger = oci_utils.get_logger("oci_instance")
    set_logger(my_logger)

    module_args = oci_utils.get_taggable_arg_spec(
        supports_create=True, supports_wait=True
    )
    module_args.update(
        dict(
            compartment_id=dict(type="str", required=False),
            name=dict(type="str", required=False, aliases=["display_name"]),
            image_id=dict(type="str", required=False, aliases=["id"]),
            instance_id=dict(type="str", required=False),
            image_source_details=dict(type="dict", required=False),
            state=dict(
                type="str",
                required=False,
                default="present",
                choices=["present", "absent"],
            ),
            launch_mode=dict(
                type="str",
                required=False,
                choices=["NATIVE", "EMULATED", "PARAVIRTUALIZED", "CUSTOM"],
            ),
        )
    )

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=False,
        mutually_exclusive=[("instance_id", "image_source_details")],
        required_if=[("state", "absent", ["image_id"])],
    )

    if not HAS_OCI_PY_SDK:
        module.fail_json(msg="oci python sdk required for this module.")

    compute_client = oci_utils.create_service_client(module, ComputeClient)
    state = module.params["state"]

    result = dict(changed=False)

    id = module.params.get("image_id", None)
    exclude_attributes = {"display_name": True}
    debug("Id is " + str(id))
    if id is not None:
        image_resp = _get_image_from_id(compute_client, id, module)

        if state == "absent":
            debug("Delete " + id + " requested")
            if image_resp.data is not None:
                debug("Deleting " + image_resp.data.id)
                result = delete_image(compute_client, id, module)
            else:
                debug("Image " + id + " already deleted.")
        elif state == "present":
            display_name = module.params["name"]
            current_image = image_resp.data
            attrs_equal = oci_utils.are_attrs_equal(
                current_image, module, ["display_name", "freeform_tags", "defined_tags"]
            )
            if not attrs_equal:
                result = update_image(compute_client, id, display_name, module)
    else:
        result = oci_utils.check_and_create_resource(
            resource_type="image",
            create_fn=create_image,
            kwargs_create={"compute_client": compute_client, "module": module},
            list_fn=compute_client.list_images,
            kwargs_list={"compartment_id": module.params["compartment_id"]},
            module=module,
            model=CreateImageDetails(),
            exclude_attributes=exclude_attributes,
        )

    module.exit_json(**result)