oci-logging-analytics-kubernetes-discovery 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +40 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +7 -0
  5. data/LICENSE.txt +36 -0
  6. data/README.md +83 -0
  7. data/Rakefile +15 -0
  8. data/bin/console +17 -0
  9. data/bin/oci-loganalytics-kubernetes-discovery +184 -0
  10. data/bin/setup +12 -0
  11. data/lib/config/oci_client_retry_config.rb +34 -0
  12. data/lib/discover/infrastructure.rb +122 -0
  13. data/lib/discover/object.rb +347 -0
  14. data/lib/dto/infra/cluster_entity_payload.rb +22 -0
  15. data/lib/dto/infra/load_balancers_entity_payload.rb +22 -0
  16. data/lib/dto/infra/node_pool_entity_payload.rb +24 -0
  17. data/lib/dto/infra/subnet_entity_payload.rb +22 -0
  18. data/lib/dto/infra/vcn_entity_payload.rb +22 -0
  19. data/lib/dto/infra_objects_payload.rb +40 -0
  20. data/lib/dto/kubernetes_objects_payload.rb +58 -0
  21. data/lib/dto/payload/log_events.rb +26 -0
  22. data/lib/dto/payload/log_events_json.rb +22 -0
  23. data/lib/dto/state.rb +19 -0
  24. data/lib/enum/auth_type_enum.rb +9 -0
  25. data/lib/enum/infrastructure_resource_discovery.rb +9 -0
  26. data/lib/enum/kubernetes_objects_enum.rb +22 -0
  27. data/lib/enum/object_client_mapping_enum.rb +21 -0
  28. data/lib/infra_resources.rb +91 -0
  29. data/lib/objects_resources.rb +174 -0
  30. data/lib/oci_loganalytics_resources_discovery.rb +293 -0
  31. data/lib/util/kube_client.rb +141 -0
  32. data/lib/util/kubectl_ops.rb +229 -0
  33. data/lib/util/log_analytics.rb +154 -0
  34. data/lib/util/logging.rb +96 -0
  35. data/lib/util/oci_clients.rb +228 -0
  36. data/lib/util/state_manager.rb +61 -0
  37. data/lib/util/string_utils.rb +16 -0
  38. data/lib/version.rb +6 -0
  39. data/oci-logging-analytics-kubernetes-discovery.gemspec +45 -0
  40. metadata +324 -0
@@ -0,0 +1,228 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ require 'oci'
5
+
6
+ require_relative '../util/logging'
7
+ require_relative '../enum/auth_type_enum'
8
+ require_relative '../config/oci_client_retry_config'
9
+
10
+ module Util
11
+ module OCIClients
12
+ extend Util::Logging
13
+
14
+ module_function
15
+
16
+ attr_accessor :oci_clients, :ce_client, :id_client, :lb_client, :la_client, :rs_client, :vnc_client,
17
+ :oci_config, :instance_principals_signer, :auth_type, :endpoint, :auth_config_object
18
+
19
+ def create_clients(auth_object, options)
20
+ begin
21
+ @la_client = initialize_la_client(auth_object, nil)
22
+
23
+ if options[:mode] == 'object'
24
+ set_clients
25
+ return
26
+ end
27
+
28
+ @ce_client = initialize_ce_client(auth_object)
29
+ @id_client = initialize_id_client(auth_object)
30
+ @lb_client = initialize_lb_client(auth_object)
31
+ @rs_client = initialize_rs_client(auth_object)
32
+ @vnc_client = initialize_vnc_client(auth_object)
33
+ rescue StandardError => e
34
+ logger.error("Error while creating OCI clients. Error: #{e}")
35
+ raise e
36
+ end
37
+ set_clients
38
+ nil
39
+ end
40
+
41
+ def initialize_ce_client(auth_object)
42
+ client = nil
43
+ logger.debug("Creating container engine client with auth_type: #{auth_object[:auth_type]}")
44
+ begin
45
+ case auth_object[:auth_type]
46
+ when Enum::AuthTypeEnum::CONFIG
47
+ client = OCI::ContainerEngine::ContainerEngineClient.new(config: auth_object[:oci_config])
48
+ when Enum::AuthTypeEnum::INSTANCE_PRINCIPAL
49
+ client = OCI::ContainerEngine::ContainerEngineClient.new(config: auth_object[:oci_config], signer: auth_object[:instance_principals_signer])
50
+ else
51
+ logger.warn("Unknown auth_type '#{auth_object[:auth_type]}' provided for container engine client.")
52
+ end
53
+ @ce_client = client
54
+ rescue StandardError => e
55
+ logger.error("Error while creating container engine client: #{e}")
56
+ raise e
57
+ end
58
+ client
59
+ end
60
+
61
+ def initialize_id_client(auth_object)
62
+ client = nil
63
+ logger.debug("Creating identity client with auth_type: #{auth_object[:auth_type]}")
64
+ begin
65
+ case auth_object[:auth_type]
66
+ when Enum::AuthTypeEnum::CONFIG
67
+ client = OCI::Identity::IdentityClient.new(config: auth_object[:oci_config])
68
+ when Enum::AuthTypeEnum::ENDPOINT
69
+ client = OCI::Identity::IdentityClient.new(config: auth_object[:oci_config], endpoint: auth_object[:endpoint])
70
+ when Enum::AuthTypeEnum::PRINCIPAL
71
+ client = OCI::Identity::IdentityClient.new(config: auth_object[:oci_config], signer: auth_object[:instance_principals_signer])
72
+ else
73
+ logger.warn("Unknown auth_type '#{auth_object[:auth_type]}' provided for identity client.")
74
+ end
75
+ @id_client = client
76
+ rescue StandardError => e
77
+ logger.error("Error while creating identity client: #{e}")
78
+ raise e
79
+ end
80
+ @id_client
81
+ end
82
+
83
+ def initialize_lb_client(auth_object)
84
+ client = nil
85
+ logger.debug("Creating load balancer client with auth_type: #{auth_object[:auth_type]}")
86
+ begin
87
+ case auth_object[:auth_type]
88
+ when Enum::AuthTypeEnum::CONFIG
89
+ client = OCI::LoadBalancer::LoadBalancerClient.new(config: auth_object[:oci_config])
90
+ when Enum::AuthTypeEnum::ENDPOINT
91
+ client = OCI::LoadBalancer::LoadBalancerClient.new(config: auth_object[:oci_config], endpoint: auth_object[:endpoint])
92
+ when Enum::AuthTypeEnum::PRINCIPAL
93
+ client = OCI::LoadBalancer::LoadBalancerClient.new(config: auth_object[:oci_config], signer: auth_object[:instance_principals_signer])
94
+ else
95
+ logger.warn("Unknown auth_type '#{auth_object[:auth_type]}' provided for load balancer client.")
96
+ end
97
+ @lb_client = client
98
+ rescue StandardError => e
99
+ logger.error("Error while creating load balancer client: #{e}")
100
+ raise e
101
+ end
102
+ @lb_client
103
+ end
104
+
105
+ def initialize_la_client(auth_object, custom_retry_config)
106
+ client = nil
107
+ logger.debug("Creating log analytics client with auth_type: #{auth_object[:auth_type]}")
108
+ Config::OCIClientRetryConfig.set_custom_retry_config(custom_retry_config) unless custom_retry_config.nil?
109
+
110
+ begin
111
+ case auth_object[:auth_type]
112
+ when Enum::AuthTypeEnum::CONFIG
113
+ client = OCI::LogAnalytics::LogAnalyticsClient.new(config: auth_object[:oci_config],
114
+ endpoint: auth_object[:endpoint],
115
+ retry_config: Config::OCIClientRetryConfig.get_retry_config)
116
+ when Enum::AuthTypeEnum::INSTANCE_PRINCIPAL
117
+ client = OCI::LogAnalytics::LogAnalyticsClient.new(config: auth_object[:oci_config],
118
+ endpoint: auth_object[:endpoint],
119
+ signer: auth_object[:instance_principals_signer],
120
+ retry_config: Config::OCIClientRetryConfig.get_retry_config)
121
+ else
122
+ logger.warn("Unknown auth_type while creating log analytics client: #{auth_object[:auth_type]}")
123
+ raise StandardError, 'Unknown auth_type for log analytics client.'
124
+ end
125
+ @la_client = client
126
+ rescue StandardError => e
127
+ logger.error("Error while creating log analytics client: #{e}")
128
+ raise e
129
+ end
130
+ @la_client
131
+ end
132
+
133
+ def initialize_rs_client(auth_object)
134
+ client = nil
135
+ logger.debug("Creating resource search client with auth_type: #{auth_object[:auth_type]}")
136
+ begin
137
+ case auth_object[:auth_type]
138
+ when Enum::AuthTypeEnum::CONFIG
139
+ client = OCI::ResourceSearch::ResourceSearchClient.new(config: auth_object[:oci_config])
140
+ when Enum::AuthTypeEnum::ENDPOINT
141
+ client = OCI::ResourceSearch::ResourceSearchClient.new(config: auth_object[:oci_config], endpoint: auth_object[:endpoint])
142
+ when Enum::AuthTypeEnum::PRINCIPAL
143
+ client = OCI::ResourceSearch::ResourceSearchClient.new(config: auth_object[:oci_config], signer: auth_object[:instance_principals_signer])
144
+ else
145
+ logger.warn("Unknown auth_type '#{auth_object[:auth_type]}' provided for resource search client.")
146
+ end
147
+ @rs_client = client
148
+ rescue StandardError => e
149
+ logger.error("Error while creating resource search client: #{e}")
150
+ raise e
151
+ end
152
+ @rs_client
153
+ end
154
+
155
+ def initialize_vnc_client(auth_object)
156
+ client = nil
157
+ logger.debug("Creating virtual network client with auth_type: #{auth_object[:auth_type]}")
158
+ begin
159
+ case auth_object[:auth_type]
160
+ when Enum::AuthTypeEnum::CONFIG
161
+ client = OCI::Core::VirtualNetworkClient.new(config: auth_object[:oci_config])
162
+ when Enum::AuthTypeEnum::ENDPOINT
163
+ client = OCI::Core::VirtualNetworkClient.new(config: auth_object[:oci_config], endpoint: auth_object[:endpoint])
164
+ when Enum::AuthTypeEnum::PRINCIPAL
165
+ client = OCI::Core::VirtualNetworkClient.new(config: auth_object[:oci_config], signer: auth_object[:instance_principals_signer])
166
+ else
167
+ logger.warn("Unknown auth_type '#{auth_object[:auth_type]}' provided for virtual network client.")
168
+ end
169
+ @vnc_client = client
170
+ rescue StandardError => e
171
+ logger.error("Error while creating virtual network client: #{e}")
172
+ raise e
173
+ end
174
+ @vnc_client
175
+ end
176
+
177
+ def initialize_auth_config(auth_config_hash)
178
+ @endpoint = auth_config_hash[:endpoint]
179
+
180
+ begin
181
+ if !auth_config_hash[:config_file_location].nil? && !auth_config_hash[:profile_name].nil?
182
+ @oci_config = OCI::ConfigFileLoader.load_config(config_file_location: auth_config_hash[:config_file_location],
183
+ profile_name: auth_config_hash[:profile_name])
184
+ end
185
+
186
+ if !@oci_config.nil?
187
+ @auth_type = Enum::AuthTypeEnum::CONFIG
188
+ else
189
+ @oci_config = OCI::Config.new
190
+ @instance_principals_signer = instance_principals_signer = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new
191
+ @auth_type = Enum::AuthTypeEnum::INSTANCE_PRINCIPAL
192
+ end
193
+ rescue StandardError => e
194
+ logger.error("Error occurred while initializing OCI authentication configuration. Error: #{e}")
195
+ raise e
196
+ end
197
+ set_auth_config_object
198
+ end
199
+
200
+ def get_clients
201
+ @oci_clients
202
+ end
203
+
204
+ def set_clients
205
+ @oci_clients = {
206
+ ce_client: @ce_client,
207
+ id_client: @id_client,
208
+ lb_client: @lb_client,
209
+ la_client: @la_client,
210
+ rs_client: @rs_client,
211
+ vnc_client: @vnc_client
212
+ }
213
+ end
214
+
215
+ def get_auth_config_object
216
+ @auth_object
217
+ end
218
+
219
+ def set_auth_config_object
220
+ @auth_object = {
221
+ oci_config: @oci_config,
222
+ endpoint: @endpoint,
223
+ instance_principals_signer: @instance_principals_signer,
224
+ auth_type: @auth_type
225
+ }.compact
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,61 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ require_relative '../util/logging'
5
+ require_relative '../dto/state'
6
+ require_relative '../util/kubectl_ops'
7
+ require 'json'
8
+
9
+ module Util
10
+ module StateManager
11
+ extend Util::Logging
12
+
13
+ EVENTS_TRACKER_CM = 'discovery-state-tracker'.freeze
14
+
15
+ @is_intialized = false
16
+
17
+ module_function
18
+
19
+ def init(prefix, namespace)
20
+ return if @is_intialized
21
+
22
+ @events_tracker_configmap = prefix + '-' + EVENTS_TRACKER_CM
23
+ @namespace = namespace
24
+ @state = Dto::State.new
25
+ state_config_map = Util::KubectlOps.get_configmap(@events_tracker_configmap, @namespace)
26
+ if state_config_map.nil?
27
+ # This is first instance of cronjob execution
28
+ # therefore, events tracker configmap does not exist in cluster
29
+ logger.info("configmap/#{@events_tracker_configmap} not found.")
30
+ @state.last_timestamp = 0 # 1 January 1970 00:00
31
+ begin
32
+ Util::KubectlOps.create_configmap(@events_tracker_configmap, @namespace, @state.to_hash)
33
+ rescue KubeException => e
34
+ logger.error("Missing permission to create config map in namespace - #{@namespace}")
35
+ raise e
36
+ end
37
+ logger.info("Created new Configmap - #{@events_tracker_configmap}.")
38
+ else
39
+ last_timestamp = state_config_map[:data][:last_timestamp]
40
+ logger.info("timestamp fetched from configmap - #{last_timestamp} - #{Time.at(last_timestamp.to_i).getutc}")
41
+ @state.last_timestamp = last_timestamp.to_i
42
+ end
43
+ @is_intialized = true
44
+ end
45
+
46
+ def init_check
47
+ raise StandardError, 'Method call before initializig Module - StateManager' unless @is_intialized
48
+ end
49
+
50
+ def state
51
+ init_check
52
+ @state
53
+ end
54
+
55
+ def update_state_configmap
56
+ init_check
57
+ Util::KubectlOps.patch_configmap(@events_tracker_configmap, @namespace, @state.to_hash)
58
+ logger.info("Updated configmap - #{@events_tracker_configmap} with new state.")
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,16 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ module Util
5
+ module StringUtils
6
+ def format_option_selections(option_array)
7
+ option_selections = ''
8
+ option_segregator = '|'
9
+ option_array.each_with_index do |value, index|
10
+ option_selections.concat(value.downcase).concat(option_array.size == (index + 1) ? '' : option_segregator)
11
+ end
12
+ option_selections.prepend('{')
13
+ option_selections.concat('}')
14
+ end
15
+ end
16
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,6 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ module Discovery
5
+ VERSION = '1.0.0'.freeze
6
+ end
@@ -0,0 +1,45 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ require_relative 'lib/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'oci-logging-analytics-kubernetes-discovery'
8
+ spec.version = Discovery::VERSION
9
+ spec.authors = ['Oracle', 'OCI Observability: Logging Analytics']
10
+ spec.email = ['oci_la_plugins_grp@oracle.com']
11
+
12
+ spec.summary = 'A rubygem for discovering Kubernetes resources and send it to OCI Logging Analytics.'
13
+ spec.description = 'A rubygem for discovering Kubernetes resources and send it to OCI Logging Analytics.'
14
+ spec.homepage = 'https://rubygems.org/gems/oci-logging-analytics-kubernetes-discovery'
15
+ spec.license = 'UPL-1.0'
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = 'bin'
23
+ spec.executables << 'oci-loganalytics-kubernetes-discovery'
24
+ spec.require_paths = ['lib']
25
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
26
+
27
+ spec.add_development_dependency 'bundler', '~> 2.3.3'
28
+ spec.add_development_dependency 'forking_test_runner', '~> 1.13.0'
29
+ spec.add_development_dependency 'httplog', '~> 1.6.2'
30
+ spec.add_development_dependency 'minitest', '~> 5.15.0'
31
+ spec.add_development_dependency 'minitest-rg', '~> 5.3.0'
32
+ spec.add_development_dependency 'mocha', '~> 1.5'
33
+ spec.add_development_dependency 'pry', '~> 0.14.2'
34
+ spec.add_development_dependency 'rake', '~> 13.1.0'
35
+ spec.add_development_dependency 'rubocop', '~> 1.3.0'
36
+ spec.add_development_dependency 'simplecov', '~> 0.22.0'
37
+ spec.add_development_dependency 'test-unit', '~> 3.0'
38
+ spec.add_development_dependency 'webmock', '~> 3.0'
39
+
40
+ spec.add_runtime_dependency 'concurrent-ruby', '~> 1.2.2'
41
+ spec.add_runtime_dependency 'kubeclient', '~> 4.9.3'
42
+ spec.add_runtime_dependency 'oci', '~> 2.20.0'
43
+ spec.add_runtime_dependency 'rubyzip', '~> 2.3.2'
44
+ spec.add_runtime_dependency 'yajl-ruby', '~> 1.0'
45
+ end
metadata ADDED
@@ -0,0 +1,324 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oci-logging-analytics-kubernetes-discovery
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Oracle
8
+ - 'OCI Observability: Logging Analytics'
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2024-02-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 2.3.3
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 2.3.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: forking_test_runner
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.13.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: 1.13.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: httplog
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: 1.6.2
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 1.6.2
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 5.15.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 5.15.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest-rg
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 5.3.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 5.3.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: mocha
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '1.5'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '1.5'
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: 0.14.2
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 0.14.2
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 13.1.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 13.1.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: 1.3.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 1.3.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: simplecov
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: 0.22.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: 0.22.0
154
+ - !ruby/object:Gem::Dependency
155
+ name: test-unit
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '3.0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: '3.0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: webmock
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '3.0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '3.0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: concurrent-ruby
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: 1.2.2
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: 1.2.2
196
+ - !ruby/object:Gem::Dependency
197
+ name: kubeclient
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: 4.9.3
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: 4.9.3
210
+ - !ruby/object:Gem::Dependency
211
+ name: oci
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: 2.20.0
217
+ type: :runtime
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ~>
222
+ - !ruby/object:Gem::Version
223
+ version: 2.20.0
224
+ - !ruby/object:Gem::Dependency
225
+ name: rubyzip
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ~>
229
+ - !ruby/object:Gem::Version
230
+ version: 2.3.2
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ~>
236
+ - !ruby/object:Gem::Version
237
+ version: 2.3.2
238
+ - !ruby/object:Gem::Dependency
239
+ name: yajl-ruby
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ~>
243
+ - !ruby/object:Gem::Version
244
+ version: '1.0'
245
+ type: :runtime
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ~>
250
+ - !ruby/object:Gem::Version
251
+ version: '1.0'
252
+ description: A rubygem for discovering Kubernetes resources and send it to OCI Logging
253
+ Analytics.
254
+ email:
255
+ - oci_la_plugins_grp@oracle.com
256
+ executables:
257
+ - oci-loganalytics-kubernetes-discovery
258
+ extensions: []
259
+ extra_rdoc_files: []
260
+ files:
261
+ - .gitignore
262
+ - .travis.yml
263
+ - Gemfile
264
+ - LICENSE.txt
265
+ - README.md
266
+ - Rakefile
267
+ - bin/console
268
+ - bin/oci-loganalytics-kubernetes-discovery
269
+ - bin/setup
270
+ - lib/config/oci_client_retry_config.rb
271
+ - lib/discover/infrastructure.rb
272
+ - lib/discover/object.rb
273
+ - lib/dto/infra/cluster_entity_payload.rb
274
+ - lib/dto/infra/load_balancers_entity_payload.rb
275
+ - lib/dto/infra/node_pool_entity_payload.rb
276
+ - lib/dto/infra/subnet_entity_payload.rb
277
+ - lib/dto/infra/vcn_entity_payload.rb
278
+ - lib/dto/infra_objects_payload.rb
279
+ - lib/dto/kubernetes_objects_payload.rb
280
+ - lib/dto/payload/log_events.rb
281
+ - lib/dto/payload/log_events_json.rb
282
+ - lib/dto/state.rb
283
+ - lib/enum/auth_type_enum.rb
284
+ - lib/enum/infrastructure_resource_discovery.rb
285
+ - lib/enum/kubernetes_objects_enum.rb
286
+ - lib/enum/object_client_mapping_enum.rb
287
+ - lib/infra_resources.rb
288
+ - lib/objects_resources.rb
289
+ - lib/oci_loganalytics_resources_discovery.rb
290
+ - lib/util/kube_client.rb
291
+ - lib/util/kubectl_ops.rb
292
+ - lib/util/log_analytics.rb
293
+ - lib/util/logging.rb
294
+ - lib/util/oci_clients.rb
295
+ - lib/util/state_manager.rb
296
+ - lib/util/string_utils.rb
297
+ - lib/version.rb
298
+ - oci-logging-analytics-kubernetes-discovery.gemspec
299
+ homepage: https://rubygems.org/gems/oci-logging-analytics-kubernetes-discovery
300
+ licenses:
301
+ - UPL-1.0
302
+ metadata: {}
303
+ post_install_message:
304
+ rdoc_options: []
305
+ require_paths:
306
+ - lib
307
+ required_ruby_version: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - '>='
310
+ - !ruby/object:Gem::Version
311
+ version: 2.7.0
312
+ required_rubygems_version: !ruby/object:Gem::Requirement
313
+ requirements:
314
+ - - '>='
315
+ - !ruby/object:Gem::Version
316
+ version: '0'
317
+ requirements: []
318
+ rubyforge_project:
319
+ rubygems_version: 2.0.14.1
320
+ signing_key:
321
+ specification_version: 4
322
+ summary: A rubygem for discovering Kubernetes resources and send it to OCI Logging
323
+ Analytics.
324
+ test_files: []