class Train::Transports::Gcp::Connection
Public Class Methods
new(options)
click to toggle source
Calls superclass method
# File lib/train/transports/gcp.rb, line 37 def initialize(options) super(options) # additional GCP platform metadata release = Gem.loaded_specs["google-api-client"].version @platform_details = { release: "google-api-client-v#{release}" } # Initialize the client object cache @cache_enabled[:api_call] = true @cache[:api_call] = {} connect end
Public Instance Methods
connect()
click to toggle source
# File lib/train/transports/gcp.rb, line 89 def connect ENV["GOOGLE_APPLICATION_CREDENTIALS"] = @options[:google_application_credentials] if @options[:google_application_credentials] ENV["GOOGLE_CLOUD_PROJECT"] = @options[:google_cloud_project] if @options[:google_cloud_project] # GCP initialization scopes = ["https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute"] authorization = Google::Auth.get_application_default(scopes) Google::Apis::ClientOptions.default.application_name = "chef-inspec-train" Google::Apis::ClientOptions.default.application_version = Train::VERSION Google::Apis::RequestOptions.default.authorization = authorization end
gcp_admin_client()
click to toggle source
# File lib/train/transports/gcp.rb, line 72 def gcp_admin_client scopes = ["https://www.googleapis.com/auth/admin.directory.user.readonly"] authorization = Google::Auth.get_application_default(scopes).dup # Use of the Admin API requires delegation (impersonation). An email address of a Super Admin in # the G Suite account may be required. authorization.sub = @options[:google_super_admin_email] if @options[:google_super_admin_email] Google::Apis::RequestOptions.default.authorization = authorization gcp_client(Google::Apis::AdminDirectoryV1::DirectoryService) end
gcp_client(klass)
click to toggle source
Let's allow for other clients too
# File lib/train/transports/gcp.rb, line 83 def gcp_client(klass) return klass.new unless cache_enabled?(:api_call) @cache[:api_call][klass.to_s.to_sym] ||= klass.new end
gcp_compute_client()
click to toggle source
Instantiate some named classes for ease of use
# File lib/train/transports/gcp.rb, line 56 def gcp_compute_client gcp_client(Google::Apis::ComputeV1::ComputeService) end
gcp_iam_client()
click to toggle source
# File lib/train/transports/gcp.rb, line 60 def gcp_iam_client gcp_client(Google::Apis::IamV1::IamService) end
gcp_project_client()
click to toggle source
# File lib/train/transports/gcp.rb, line 64 def gcp_project_client gcp_client(Google::Apis::CloudresourcemanagerV1::CloudResourceManagerService) end
gcp_storage_client()
click to toggle source
# File lib/train/transports/gcp.rb, line 68 def gcp_storage_client gcp_client(Google::Apis::StorageV1::StorageService) end
platform()
click to toggle source
# File lib/train/transports/gcp.rb, line 51 def platform force_platform!("gcp", @platform_details) end
unique_identifier()
click to toggle source
# File lib/train/transports/gcp.rb, line 105 def unique_identifier unique_id = "default" # use auth client_id for users (issuer is nil) unique_id = gcp_iam_client.request_options.authorization.client_id unless gcp_iam_client.request_options.authorization.client_id.nil? # for service account credentials (client_id is nil) unique_id = gcp_iam_client.request_options.authorization.issuer unless gcp_iam_client.request_options.authorization.issuer.nil? unique_id end
uri()
click to toggle source
# File lib/train/transports/gcp.rb, line 101 def uri "gcp://#{unique_identifier}" end