Class: OCI::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/oci/config.rb

Overview

This class contains accessors for configuration attributes needed when using the SDK

Constant Summary collapse

OCI_REGION_ENV =
'OCI_REGION'.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



107
108
109
110
111
112
# File 'lib/oci/config.rb', line 107

def initialize
  @timeout = 0
  @connection_timeout = 10
  @log_requests = false
  @key_content = nil
end

Instance Attribute Details

#additional_user_agentString

If set, then this string will be added to the user agent sent with each request.

Returns:

  • (String)


93
94
95
# File 'lib/oci/config.rb', line 93

def additional_user_agent
  @additional_user_agent
end

#authentication_typeString

The authentication type user want to apply Example: instance_principal

Returns:

  • (String)


105
106
107
# File 'lib/oci/config.rb', line 105

def authentication_type
  @authentication_type
end

#connection_timeoutInteger

The time limit for the connection phase in seconds. Defaults to 10 seconds.

Returns:

  • (Integer)


87
88
89
# File 'lib/oci/config.rb', line 87

def connection_timeout
  @connection_timeout
end

#delegation_token_fileString

The file location of delegation token Example: ~/.oci/delegation

Returns:

  • (String)


99
100
101
# File 'lib/oci/config.rb', line 99

def delegation_token_file
  @delegation_token_file
end

#fingerprintString

SSL Fingerprint to use for authentication. Example: 20:3b:97:13:55:1c:1c:0d:d3:37:d8:50:4e:c5:3a:12

Returns:

  • (String)


32
33
34
# File 'lib/oci/config.rb', line 32

def fingerprint
  @fingerprint
end

#key_contentString

Client private key content. key_content takes precedence if both key_file and key_content are provided. For the security reason, don't provide the key content in the configuration file itself and it will be ignored by SDK. The value should be same as the content which is normally found in a .pem file. Example: “—–BEGIN RSA PRIVATE KEY—–nProc-Type: 4,ENCRYPTEDnDEK-Info: AES-128-CBC,D3D04C29BD3061489F4FF579A2133620nnjZO+B3DMBTz6Pszk0EUS8O2gU0T…jZpon—–END RSA PRIVATE KEY—–n”

Returns:

  • (String)


53
54
55
# File 'lib/oci/config.rb', line 53

def key_content
  @key_content
end

#key_fileString

Client private key file. Example: ~/.ssh/oci_key

Returns:

  • (String)


44
45
46
# File 'lib/oci/config.rb', line 44

def key_file
  @key_file
end

#log_requeststrue, false

Whether to log detailed request and response data. This will always write to STDOUT. Defaults to false.

Returns:

  • (true, false)


75
76
77
# File 'lib/oci/config.rb', line 75

def log_requests
  @log_requests
end

#loggerLogger

Gets the logger used for debugging. If nil, then OCI#logger will be returned instead.

Returns:

  • (Logger)


117
118
119
120
121
# File 'lib/oci/config.rb', line 117

def logger
  return OCI.logger if @logger.nil?

  @logger
end

#pass_phraseString

Pass phrase used for key file, if it is encrypted.

Returns:

  • (String)


58
59
60
# File 'lib/oci/config.rb', line 58

def pass_phrase
  @pass_phrase
end

#regionOCI::Regions::REGION_ENUM

Gets the region var. If the region doesn't exist, check OCI_REGION_ENV env var to search for it



126
127
128
129
130
# File 'lib/oci/config.rb', line 126

def region
  @region ||= ENV[OCI::Config::OCI_REGION_ENV]

  @region
end

#tenancyString

OCID of the tenancy to use for authentication. Example: ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr4jqae5f15p2b2m2yt2j6rx32uzr4h25vqstifsfdsq

Returns:

  • (String)


38
39
40
# File 'lib/oci/config.rb', line 38

def tenancy
  @tenancy
end

#timeoutInteger

The time limit for HTTP request in seconds. Defaults to 0 (times out in 365 days).

Returns:

  • (Integer)


81
82
83
# File 'lib/oci/config.rb', line 81

def timeout
  @timeout
end

#userString

OCID of the user to use for authentication. Example: ocidv1:user:oc1:phx:1460406592659:aaaaaaaawcbqrkycbolrirg2n3xjl5fabc

Returns:

  • (String)


26
27
28
# File 'lib/oci/config.rb', line 26

def user
  @user
end

Class Method Details

.validate_and_build_config_with_signer(config, signer) ⇒ Object

rubocop:enable Metrics/PerceivedComplexity



157
158
159
160
161
162
163
164
165
# File 'lib/oci/config.rb', line 157

def self.validate_and_build_config_with_signer(config, signer)
  config ||= OCI.config unless signer.is_a?(OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner) || \
                               signer.is_a?(OCI::Auth::Signers::SecurityTokenSigner)
  config ||= OCI::Config.new if signer.is_a?(OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner) || \
                                signer.is_a?(OCI::Auth::Signers::SecurityTokenSigner)
  config.validate unless signer.is_a?(OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner) || \
                         signer.is_a?(OCI::Auth::Signers::SecurityTokenSigner)
  config
end

Instance Method Details

#validateObject

rubocop:disable Metrics/PerceivedComplexity



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/oci/config.rb', line 133

def validate
  # currently, config file auth type only supports delegation token auth which is `instance_principal` based auth
  return unless @authentication_type.nil? && @delegation_token_file.nil?

  %w[user fingerprint tenancy].each do |name|
    if !instance_variable_defined?("@#{name}") || instance_variable_get("@#{name}").nil?
      raise OCI::InvalidConfigError, "The #{name} is missing in configuration."
    end
  end

  raise OCI::InvalidConfigError, 'The region is missing in configuration or environment variable.' if @region.nil?

  if (!instance_variable_defined?('@key_file') || instance_variable_get('@key_file').nil?) && @key_content.nil?
    raise OCI::InvalidConfigError, 'The key_file and key_content cannot both be missing in configuration.'
  end

  PATTERNS.each do |name, pattern|
    if (pattern =~ instance_variable_get("@#{name}")).nil?
      raise OCI::InvalidConfigError, "The format of #{name} is invalid."
    end
  end
end