# This is an automatically generated code sample.
# To make this code sample work in your Oracle Cloud tenancy,
# please replace the values for any parameters whose current values do not fit
# your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
# boolean, number, and enum parameters with values not fitting your use case).

require 'oci'

# Create a default config using DEFAULT profile in default location
# Refer to https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File for more info
config = OCI::ConfigFileLoader.load_config

# Initialize service client with default config file
dif_client = OCI::Dif::StackClient.new(config: config)

# Send the request to service, some parameters are not required, see API doc for more info
update_stack_response =
  dif_client.update_stack(
    'ocid1.test.oc1..<unique_ID>EXAMPLE-stackId-Value',
    OCI::Dif::Models::UpdateStackDetails.new(
      notification_email: 'EXAMPLE-notificationEmail-Value',
      stack_templates: %w[DEVOPSTOOLKIT],
      services: %w[GENAI],
      adb: [
        OCI::Dif::Models::AdbUpdateDetail.new(
          instance_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value',
          ecpu: 942,
          data_storage_size_in_tbs: 213,
          is_mtls_connection_required: false
        )
      ],
      ggcs: [
        OCI::Dif::Models::GgcsUpdateDetail.new(
          instance_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value',
          ocpu: 815,
          public_subnet_id:
            'ocid1.test.oc1..<unique_ID>EXAMPLE-publicSubnetId-Value',
          connections: [
            OCI::Dif::Models::GgcsConnectionDetails.new(
              connection_name: 'EXAMPLE-connectionName-Value',
              dif_dependencies: [
                OCI::Dif::Models::DifDependencyDetails.new(
                  service_type: 'EXAMPLE-serviceType-Value',
                  service_instance_id:
                    'ocid1.test.oc1..<unique_ID>EXAMPLE-serviceInstanceId-Value'
                )
              ],
              gg_admin_secret_id:
                'ocid1.test.oc1..<unique_ID>EXAMPLE-ggAdminSecretId-Value',
              connection_id:
                'ocid1.test.oc1..<unique_ID>EXAMPLE-connectionId-Value'
            )
          ]
        )
      ],
      dataflow: [
        OCI::Dif::Models::DataflowUpdateDetail.new(
          instance_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value',
          spark_version: 'EXAMPLE-sparkVersion-Value',
          driver_shape: 'EXAMPLE-driverShape-Value',
          executor_shape: 'EXAMPLE-executorShape-Value',
          driver_shape_config:
            OCI::Dif::Models::ShapeConfig.new(memory_in_gbs: 377, ocpus: 958),
          executor_shape_config:
            OCI::Dif::Models::ShapeConfig.new(memory_in_gbs: 558, ocpus: 419),
          num_executors: 97,
          private_endpoint_id:
            'ocid1.test.oc1..<unique_ID>EXAMPLE-privateEndpointId-Value',
          connections:
            OCI::Dif::Models::UpdateDataflowConnections.new(
              connection_details:
                OCI::Dif::Models::DataflowConnectionDetails.new(
                  dif_dependencies: [
                    OCI::Dif::Models::DifDependencyDetails.new(
                      service_type: 'EXAMPLE-serviceType-Value',
                      service_instance_id:
                        'ocid1.test.oc1..<unique_ID>EXAMPLE-serviceInstanceId-Value'
                    )
                  ],
                  domain_names: %w[EXAMPLE--Value]
                )
            ),
          log_bucket_instance_id:
            'ocid1.test.oc1..<unique_ID>EXAMPLE-logBucketInstanceId-Value',
          warehouse_bucket_instance_id:
            'ocid1.test.oc1..<unique_ID>EXAMPLE-warehouseBucketInstanceId-Value'
        )
      ],
      objectstorage: [
        OCI::Dif::Models::ObjectStorageUpdateDetail.new(
          instance_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value',
          object_versioning: 'DISABLED',
          auto_tiering: 'DISABLED'
        )
      ],
      genai: [
        OCI::Dif::Models::GenAiUpdateDetail.new(
          instance_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value',
          unit_count: 645,
          endpoints: [
            OCI::Dif::Models::EndpointDetails.new(
              endpoint_name: 'EXAMPLE-endpointName-Value',
              is_content_moderation_enabled: false
            )
          ]
        )
      ],
      freeform_tags: {
        'EXAMPLE_KEY_IqKyh' => 'EXAMPLE_VALUE_bF2kxK2AypMLOCsN5aaP'
      },
      defined_tags: {
        'EXAMPLE_KEY_ATEI2' => { 'EXAMPLE_KEY_tV3AW' => 'EXAMPLE--Value' }
      }
    )
  )

# Get the data from response
puts "#{update_stack_response.headers}"