# 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: 5469, maximum_bandwidth_in_mbps: 3308
        ),
      is_private: true,
      is_delete_protection_enabled: false,
      ip_mode: 'IPV4',
      ipv6_subnet_cidr: 'EXAMPLE-ipv6SubnetCidr-Value',
      is_request_id_enabled: true,
      request_id_header: 'EXAMPLE-requestIdHeader-Value',
      reserved_ips: [
        OCI::LoadBalancer::Models::ReservedIP.new(
          id: 'ocid1.test.oc1..<unique_ID>EXAMPLE-id-Value'
        )
      ],
      listeners: {
        'EXAMPLE_KEY_dsM35' => {
          'defaultBackendSetName' => 'EXAMPLE-defaultBackendSetName-Value',
          'port' => 2520,
          'protocol' => 'EXAMPLE-protocol-Value',
          'hostnameNames' => %w[EXAMPLE--Value],
          'pathRouteSetName' => 'EXAMPLE-pathRouteSetName-Value',
          'sslConfiguration' => {
            'verifyDepth' => 978,
            'verifyPeerCertificate' => False,
            'hasSessionResumption' => 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' => 546,
            'backendTcpProxyProtocolVersion' => 1,
            'backendTcpProxyProtocolOptions' => %w[PP2_TYPE_AUTHORITY]
          },
          'routingPolicyName' => 'EXAMPLE-routingPolicyName-Value',
          'ruleSetNames' => %w[EXAMPLE--Value]
        }
      },
      hostnames: {
        'EXAMPLE_KEY_3BKWr' => {
          'name' => 'EXAMPLE-name-Value', 'hostname' => 'EXAMPLE-hostname-Value'
        }
      },
      backend_sets: {
        'EXAMPLE_KEY_9ER54' => {
          'policy' => 'EXAMPLE-policy-Value',
          'healthChecker' => {
            'protocol' => 'EXAMPLE-protocol-Value',
            'urlPath' => 'EXAMPLE-urlPath-Value',
            'port' => 10_310,
            'returnCode' => 909,
            'retries' => 116,
            'timeoutInMillis' => 304_709,
            'intervalInMillis' => 106_961,
            'responseBodyRegex' => 'EXAMPLE-responseBodyRegex-Value',
            'isForcePlainText' => True
          },
          'backends' => [
            {
              'ipAddress' => 'EXAMPLE-ipAddress-Value',
              'port' => 27_576,
              'weight' => 720,
              'maxConnections' => 37_294,
              'backup' => False,
              'drain' => True,
              'offline' => False
            }
          ],
          'backendMaxConnections' => 50_987,
          'sslConfiguration' => {
            'verifyDepth' => 939,
            'verifyPeerCertificate' => True,
            'hasSessionResumption' => False,
            'trustedCertificateAuthorityIds' => %w[EXAMPLE--Value],
            'certificateIds' => %w[EXAMPLE--Value],
            'certificateName' => 'EXAMPLE-certificateName-Value',
            'protocols' => %w[EXAMPLE--Value],
            'cipherSuiteName' => 'EXAMPLE-cipherSuiteName-Value',
            'serverOrderPreference' => 'DISABLED'
          },
          'sessionPersistenceConfiguration' => {
            'cookieName' => 'EXAMPLE-cookieName-Value',
            'disableFallback' => False
          },
          'lbCookieSessionPersistenceConfiguration' => {
            'cookieName' => 'EXAMPLE-cookieName-Value',
            'disableFallback' => True,
            'domain' => 'EXAMPLE-domain-Value',
            'path' => 'EXAMPLE-path-Value',
            'maxAgeInSeconds' => 425,
            'isSecure' => False,
            'isHttpOnly' => True
          }
        }
      },
      network_security_group_ids: %w[EXAMPLE--Value],
      certificates: {
        'EXAMPLE_KEY_aQwJg' => {
          '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_WcSoU' => {
          'name' => 'EXAMPLE-name-Value', 'ciphers' => %w[EXAMPLE--Value]
        }
      },
      path_route_sets: {
        'EXAMPLE_KEY_D48CK' => {
          'pathRoutes' => [
            {
              'path' => 'EXAMPLE-path-Value',
              'pathMatchType' => {
                'matchType' => 'FORCE_LONGEST_PREFIX_MATCH'
              },
              'backendSetName' => 'EXAMPLE-backendSetName-Value'
            }
          ]
        }
      },
      freeform_tags: {
        'EXAMPLE_KEY_UVZ74' => 'EXAMPLE_VALUE_CTBF5Ox0Knu2JHYVxh0U'
      },
      defined_tags: {
        'EXAMPLE_KEY_9TxgC' => { 'EXAMPLE_KEY_K5uBK' => 'EXAMPLE--Value' }
      },
      security_attributes: {
        'EXAMPLE_KEY_sEzyr' => { 'EXAMPLE_KEY_XZBAK' => 'EXAMPLE--Value' }
      },
      rule_sets: {
        'EXAMPLE_KEY_92Pje' => {
          'items' => [
            {
              'action' => 'HTTP_HEADER',
              'areInvalidCharactersAllowed' => True,
              'httpLargeHeaderSizeInKB' => 714
            }
          ]
        }
      }
    )
  )

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