# 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
load_balancer_client = OCI::LoadBalancer::LoadBalancerClient.new(config: config)

# Send the request to service, some parameters are not required, see API doc for more info
create_load_balancer_response =
  load_balancer_client.create_load_balancer(
    OCI::LoadBalancer::Models::CreateLoadBalancerDetails.new(
      compartment_id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value',
      display_name: 'EXAMPLE-displayName-Value',
      shape_name: 'EXAMPLE-shapeName-Value',
      subnet_ids: %w[EXAMPLE--Value],
      shape_details:
        OCI::LoadBalancer::Models::ShapeDetails.new(
          minimum_bandwidth_in_mbps: 3632, maximum_bandwidth_in_mbps: 4424
        ),
      is_private: true,
      ip_mode: 'IPV4',
      reserved_ips: [
        OCI::LoadBalancer::Models::ReservedIP.new(
          id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-id-Value'
        )
      ],
      listeners: {
        'EXAMPLE_KEY_v38WC' => {
          'defaultBackendSetName' => 'EXAMPLE-defaultBackendSetName-Value',
          'port' => 48_439,
          'protocol' => 'EXAMPLE-protocol-Value',
          'hostnameNames' => %w[EXAMPLE--Value],
          'pathRouteSetName' => 'EXAMPLE-pathRouteSetName-Value',
          'sslConfiguration' => {
            'verifyDepth' => 406,
            'verifyPeerCertificate' => False,
            'trustedCertificateAuthorityIds' => %w[EXAMPLE--Value],
            'certificateIds' => %w[EXAMPLE--Value],
            'certificateName' => 'EXAMPLE-certificateName-Value',
            'protocols' => %w[EXAMPLE--Value],
            'cipherSuiteName' => 'EXAMPLE-cipherSuiteName-Value',
            'serverOrderPreference' => 'ENABLED'
          },
          'connectionConfiguration' => {
            'idleTimeout' => 485, 'backendTcpProxyProtocolVersion' => 1
          },
          'routingPolicyName' => 'EXAMPLE-routingPolicyName-Value',
          'ruleSetNames' => %w[EXAMPLE--Value]
        }
      },
      hostnames: {
        'EXAMPLE_KEY_HBPkF' => {
          'name' => 'EXAMPLE-name-Value', 'hostname' => 'EXAMPLE-hostname-Value'
        }
      },
      backend_sets: {
        'EXAMPLE_KEY_6FG2K' => {
          'policy' => 'EXAMPLE-policy-Value',
          'healthChecker' => {
            'protocol' => 'EXAMPLE-protocol-Value',
            'urlPath' => 'EXAMPLE-urlPath-Value',
            'port' => 7803,
            'returnCode' => 589,
            'retries' => 825,
            'timeoutInMillis' => 351_142,
            'intervalInMillis' => 117_702,
            'responseBodyRegex' => 'EXAMPLE-responseBodyRegex-Value',
            'isForcePlainText' => True
          },
          'backends' => [
            {
              'ipAddress' => 'EXAMPLE-ipAddress-Value',
              'port' => 27_587,
              'weight' => 446,
              'backup' => False,
              'drain' => True,
              'offline' => True
            }
          ],
          'sslConfiguration' => {
            'verifyDepth' => 597,
            'verifyPeerCertificate' => False,
            'trustedCertificateAuthorityIds' => %w[EXAMPLE--Value],
            'certificateIds' => %w[EXAMPLE--Value],
            'certificateName' => 'EXAMPLE-certificateName-Value',
            'protocols' => %w[EXAMPLE--Value],
            'cipherSuiteName' => 'EXAMPLE-cipherSuiteName-Value',
            'serverOrderPreference' => 'ENABLED'
          },
          'sessionPersistenceConfiguration' => {
            'cookieName' => 'EXAMPLE-cookieName-Value',
            'disableFallback' => True
          },
          'lbCookieSessionPersistenceConfiguration' => {
            'cookieName' => 'EXAMPLE-cookieName-Value',
            'disableFallback' => False,
            'domain' => 'EXAMPLE-domain-Value',
            'path' => 'EXAMPLE-path-Value',
            'maxAgeInSeconds' => 947,
            'isSecure' => False,
            'isHttpOnly' => False
          }
        }
      },
      network_security_group_ids: %w[EXAMPLE--Value],
      certificates: {
        'EXAMPLE_KEY_AkFAj' => {
          'certificateName' => 'EXAMPLE-certificateName-Value',
          'passphrase' => 'EXAMPLE-passphrase-Value',
          'privateKey' => 'EXAMPLE-privateKey-Value',
          'publicCertificate' => 'EXAMPLE-publicCertificate-Value',
          'caCertificate' => 'EXAMPLE-caCertificate-Value'
        }
      },
      ssl_cipher_suites: {
        'EXAMPLE_KEY_LbuDp' => {
          'name' => 'EXAMPLE-name-Value', 'ciphers' => %w[EXAMPLE--Value]
        }
      },
      path_route_sets: {
        'EXAMPLE_KEY_qyzNw' => {
          'pathRoutes' => [
            {
              'path' => 'EXAMPLE-path-Value',
              'pathMatchType' => {
                'matchType' => 'FORCE_LONGEST_PREFIX_MATCH'
              },
              'backendSetName' => 'EXAMPLE-backendSetName-Value'
            }
          ]
        }
      },
      freeform_tags: {
        'EXAMPLE_KEY_WRtWe' => 'EXAMPLE_VALUE_7pvVKJs6GFQavt2wE1oQ'
      },
      defined_tags: {
        'EXAMPLE_KEY_swgpY' => { 'EXAMPLE_KEY_VjesM' => 'EXAMPLE--Value' }
      },
      rule_sets: {
        'EXAMPLE_KEY_XGPGX' => {
          'items' => [
            {
              'action' => 'EXTEND_HTTP_REQUEST_HEADER_VALUE',
              'header' => 'EXAMPLE-header-Value',
              'prefix' => 'EXAMPLE-prefix-Value',
              'suffix' => 'EXAMPLE-suffix-Value'
            }
          ]
        }
      }
    )
  )

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