module Fog module Credentials # This class is managing credentials token class AzureRM class << self include Fog::AzureRM::Utilities::General end def self.get_credentials(tenant_id, client_id, client_secret, environment = Fog::AzureRM::ENVIRONMENT_AZURE_CLOUD) if @credentials.nil? || new_management_credential?(tenant_id, client_id, client_secret, environment) get_new_credentials(tenant_id, client_id, client_secret, environment) else @credentials end end def self.get_token(tenant_id, client_id, client_secret, environment = Fog::AzureRM::ENVIRONMENT_AZURE_CLOUD) get_credentials(tenant_id, client_id, client_secret, environment) if @credentials.nil? @token_provider.get_authentication_header end def self.get_new_credentials(tenant_id, client_id, client_secret, environment) @tenant_id = tenant_id @client_id = client_id @client_secret = client_secret @environment = environment return if @tenant_id.nil? || @client_id.nil? || @client_secret.nil? @token_provider = MsRestAzure::ApplicationTokenProvider.new(@tenant_id, @client_id, @client_secret, active_directory_service_settings(environment)) @credentials = MsRest::TokenCredentials.new(@token_provider) @credentials end def self.new_management_credential?(tenant_id, client_id, client_secret, environment) @tenant_id != tenant_id || @client_id != client_id || @client_secret != client_secret || @environment != environment end private_class_method :get_new_credentials private_class_method :new_management_credential? end end end