Skip to content

Commit 38dff8c

Browse files
Merge pull request #21 from paliwalparitosh/custom-domain-input
Support for new OCI Regions which are not yet supported through OCI Ruby SDK by default
2 parents 800f70e + 6cdb827 commit 38dff8c

File tree

10 files changed

+79
-34
lines changed

10 files changed

+79
-34
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
input_ocibuild/
2+
output_ocibuild_ruby_build/
3+
output_ocibuild_dockerize_api/
4+
.DS_Store
5+
fluent-plugin-oci-logging-analytics*
6+
lib/.DS_Store
7+
lib/fluent/.DS_Store

CHANGELOG.md

100644100755
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## 2.0.8 - 2024-11-18
4+
### Added
5+
- Support for new OCI Regions which are not yet supported through OCI Ruby SDK by default.
6+
37
## 2.0.7 - 2024-10-10
48
### Added
59
- Support for timezone override for logs where timezone identifier is missing

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
33

44
source "https://rubygems.org"
5+
56
gemspec

README.md

100644100755
File mode changed.

examples/apache.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@
6262
retry_forever true
6363
disable_chunk_backup true
6464
</buffer>
65-
</match>
65+
</match>

lib/fluent/dto/logEvents.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,4 @@ def to_hash
2121
timezone:@timezone
2222
}.compact
2323
end
24-
2524
end

lib/fluent/dto/logEventsJson.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,4 @@ def to_hash
2020
end
2121
}.compact
2222
end
23-
2423
end

lib/fluent/metrics/prometheusMetrics.rb

100644100755
File mode changed.

lib/fluent/plugin/out_oci-logging-analytics.rb

Lines changed: 64 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class OutOracleOCILogAnalytics < Output
9292
config_param :endpoint, :string, :default => nil
9393
desc 'AuthType to be used.'
9494
config_param :auth_type, :string, :default => 'InstancePrincipal'
95+
desc 'OCI Domain'
96+
config_param :oci_domain, :string, :default => nil
9597
desc 'Enable local payload dump.'
9698
config_param :dump_zip_file, :bool, :default => false
9799
desc 'Payload zip File Location.'
@@ -249,34 +251,62 @@ def initialize_loganalytics_client()
249251
if is_valid(@config_file_location)
250252
@auth_type = "ConfigFile"
251253
end
254+
252255
case @auth_type
253-
when "InstancePrincipal"
254-
instance_principals_signer = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new
255-
if is_valid(@endpoint)
256-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, endpoint: @endpoint, signer: instance_principals_signer)
257-
@@logger.info {"loganalytics_client initialised with endpoint: #{@endpoint}"}
258-
else
259-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, signer: instance_principals_signer)
260-
end
261-
when "WorkloadIdentity"
262-
workload_identity_signer = OCI::Auth::Signers::oke_workload_resource_principal_signer
263-
if is_valid(@endpoint)
264-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, endpoint: @endpoint, signer: workload_identity_signer)
265-
@@logger.info {"loganalytics_client initialised with endpoint: #{@endpoint}"}
266-
else
267-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, signer: workload_identity_signer)
268-
end
269-
when "ConfigFile"
270-
my_config = OCI::ConfigFileLoader.load_config(config_file_location: @config_file_location, profile_name: @profile_name)
271-
if is_valid(@endpoint)
272-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: my_config, endpoint: @endpoint)
273-
@@logger.info {"loganalytics_client initialised with endpoint: #{@endpoint}"}
274-
else
275-
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config:my_config)
276-
end
256+
when "InstancePrincipal"
257+
instance_principals_signer = nil
258+
la_endpoint = nil
259+
if is_valid(@oci_domain)
260+
fedration_endpoint = "https://auth.#{@oci_domain}/v1/x509"
261+
instance_principals_signer = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new(
262+
federation_endpoint: fedration_endpoint)
263+
@@logger.info "Custom Federation Endpoint: #{fedration_endpoint}"
277264
else
278-
raise Fluent::ConfigError, "Invalid authType @auth_type, authType must be either InstancePrincipal or ConfigFile."
279-
abort
265+
instance_principals_signer = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new
266+
end
267+
if is_valid(@endpoint)
268+
la_endpoint = @endpoint
269+
@@logger.info "Initializing loganalytics_client with endpoint: #{la_endpoint}"
270+
elsif is_valid(@oci_domain)
271+
la_endpoint = "https://loganalytics.#{@oci_domain}"
272+
@@logger.info "Initializing loganalytics_client with custom domain endpoint: #{la_endpoint}"
273+
end
274+
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(
275+
config: OCI::Config.new,
276+
endpoint: la_endpoint,
277+
signer: instance_principals_signer)
278+
@@logger.info 'loganalytics_client initialized.'
279+
when "WorkloadIdentity"
280+
la_endpoint = nil
281+
workload_identity_signer = OCI::Auth::Signers::oke_workload_resource_principal_signer
282+
if is_valid(@endpoint)
283+
la_endpoint = @endpoint
284+
@@logger.info "Initializing loganalytics_client with endpoint: #{@endpoint}"
285+
elsif is_valid(@oci_domain)
286+
la_endpoint = "https://loganalytics.#{@oci_domain}"
287+
@@logger.info "Initializing loganalytics_client with custom domain endpoint: #{la_endpoint}"
288+
end
289+
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(
290+
config: OCI::Config.new,
291+
endpoint: la_endpoint,
292+
signer: workload_identity_signer)
293+
@@logger.info 'loganalytics_client initialized.'
294+
when "ConfigFile"
295+
my_config = OCI::ConfigFileLoader.load_config(
296+
config_file_location: @config_file_location,
297+
profile_name: @profile_name)
298+
la_endpoint = nil
299+
if is_valid(@endpoint)
300+
la_endpoint = @endpoint
301+
@@logger.info "Initializing loganalytics_client with endpoint: #{la_endpoint}"
302+
elsif is_valid(@oci_domain)
303+
la_endpoint = "https://loganalytics.#{@oci_domain}"
304+
@@logger.info "Initializing loganalytics_client with custom domain endpoint: #{la_endpoint}"
305+
end
306+
@@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: my_config, endpoint: la_endpoint)
307+
@@logger.info 'loganalytics_client initialised'
308+
else
309+
raise Fluent::ConfigError, "Invalid authType: #{@auth_type}, valid inputs are - InstancePrincipal, ConfigFile, WorkloadIdentity"
280310
end
281311

282312
if is_valid(@proxy_ip) && is_number(@proxy_port)
@@ -288,13 +318,18 @@ def initialize_loganalytics_client()
288318
end
289319

290320
rescue => ex
291-
@@logger.error {"Error occurred while initializing LogAnalytics Client:
292-
authType: #{@auth_type},
293-
errorMessage: #{ex}"}
321+
@@logger.error {"Error occurred while initializing LogAnalytics Client:
322+
authType: #{@auth_type},
323+
errorMessage: #{ex}"}
294324
end
295325

296326
def configure(conf)
297327
super
328+
329+
if is_valid(@oci_domain) && !@oci_domain.match(/\S.oci.\S/)
330+
raise Fluent::ConfigError, "Invalid oci_domain: #{@oci_domain}, valid fmt: <oci-region>.oci.<oci-domain> | ex: us-ashburn-1.oci.oraclecloud.com"
331+
end
332+
298333
@@prometheusMetrics = PrometheusMetrics.instance
299334
initialize_logger
300335

lib/fluent/version/version.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
## Copyright (c) 2024 Oracle and/or its affiliates.
1+
## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
22
## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
33

44
# frozen_string_literal: true
55

66
module Version
7-
VERSION = "2.0.7".freeze
7+
VERSION = "2.0.8".freeze
88
end

0 commit comments

Comments
 (0)