Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions lib/train/transports/azure.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
require "train/plugins"
require "ms_rest_azure"
require "azure_mgmt_resources"
require "azure_graph_rbac"
require "azure_mgmt_key_vault"
require "ms_rest_azure2"
require "azure_mgmt_resources2"
require "azure_graph_rbac2"
require "azure_mgmt_key_vault2"
require "socket" unless defined?(Socket)
require "timeout" unless defined?(Timeout)
require "train/transports/helpers/azure/file_credentials"
Expand Down Expand Up @@ -50,8 +50,8 @@ def initialize(options)
@options[:msi_port] = @options[:msi_port].to_i unless @options[:msi_port].nil?

# additional platform details
release = Gem.loaded_specs["azure_mgmt_resources"].version
@platform_details = { release: "azure_mgmt_resources-v#{release}" }
release = Gem.loaded_specs["azure_mgmt_resources2"].version
@platform_details = { release: "azure_mgmt_resources2-v#{release}" }

connect
end
Expand All @@ -60,16 +60,16 @@ def platform
force_platform!("azure", @platform_details)
end

def azure_client(klass = ::Azure::Resources::Profiles::Latest::Mgmt::Client, opts = {})
def azure_client(klass = ::Azure::Resources2::Profiles::Latest::Mgmt::Client, opts = {})
if cache_enabled?(:api_call)
return @cache[:api_call][klass.to_s.to_sym] unless @cache[:api_call][klass.to_s.to_sym].nil?
end

if klass == ::Azure::Resources::Profiles::Latest::Mgmt::Client
@credentials[:base_url] = MsRestAzure::AzureEnvironments::AzureCloud.resource_manager_endpoint_url
elsif klass == ::Azure::GraphRbac::Profiles::Latest::Client
if klass == ::Azure::Resources2::Profiles::Latest::Mgmt::Client
@credentials[:base_url] = MsRestAzure2::AzureEnvironments::AzureCloud.resource_manager_endpoint_url
elsif klass == ::Azure::GraphRbac2::Profiles::Latest::Client
client = GraphRbac.client(@credentials)
elsif klass == ::Azure::KeyVault::Profiles::Latest::Mgmt::Client
elsif klass == ::Azure::KeyVault2::Profiles::Latest::Mgmt::Client
client = Vault.client(opts[:vault_name], @credentials)
end

Expand All @@ -85,17 +85,17 @@ def connect
if msi_auth?
# this needs set for azure cloud to authenticate
ENV["MSI_VM"] = "true"
provider = ::MsRestAzure::MSITokenProvider.new(@options[:msi_port])
provider = ::MsRestAzure2::MSITokenProvider.new(@options[:msi_port])
else
provider = ::MsRestAzure::ApplicationTokenProvider.new(
provider = ::MsRestAzure2::ApplicationTokenProvider.new(
@options[:tenant_id],
@options[:client_id],
@options[:client_secret]
)
end

@credentials = {
credentials: ::MsRest::TokenCredentials.new(provider),
credentials: ::MsRest2::TokenCredentials.new(provider),
subscription_id: @options[:subscription_id],
tenant_id: @options[:tenant_id],
}
Expand Down Expand Up @@ -138,7 +138,7 @@ def get_api_version(resource_type, options)
# determine the namespace for the resource type
namespace, type = resource_type.split(%r{/})

client = azure_client(::Azure::Resources::Profiles::Latest::Mgmt::Client)
client = azure_client(::Azure::Resources2::Profiles::Latest::Mgmt::Client)
provider = client.providers.get(namespace)

# get the latest API version for the type
Expand Down
18 changes: 9 additions & 9 deletions lib/train/transports/clients/azure/graph_rbac.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
require "azure_graph_rbac"
require "azure_graph_rbac2"

# Wrapper class for ::Azure::GraphRbac::Profiles::Latest::Client allowing custom configuration,
# for example, defining additional settings for the ::MsRestAzure::ApplicationTokenProvider.
# Wrapper class for ::Azure::GraphRbac2::Profiles::Latest::Client allowing custom configuration,
# for example, defining additional settings for the ::MsRestAzure2::ApplicationTokenProvider.
class GraphRbac
AUTH_ENDPOINT = MsRestAzure::AzureEnvironments::AzureCloud.active_directory_endpoint_url
API_ENDPOINT = MsRestAzure::AzureEnvironments::AzureCloud.active_directory_graph_resource_id
AUTH_ENDPOINT = MsRestAzure2::AzureEnvironments::AzureCloud.active_directory_endpoint_url
API_ENDPOINT = MsRestAzure2::AzureEnvironments::AzureCloud.active_directory_graph_resource_id

def self.client(credentials)
credentials[:credentials] = ::MsRest::TokenCredentials.new(provider(credentials))
credentials[:credentials] = ::MsRest2::TokenCredentials.new(provider(credentials))
credentials[:base_url] = API_ENDPOINT

::Azure::GraphRbac::Profiles::Latest::Client.new(credentials)
::Azure::GraphRbac2::Profiles::Latest::Client.new(credentials)
end

def self.provider(credentials)
::MsRestAzure::ApplicationTokenProvider.new(
::MsRestAzure2::ApplicationTokenProvider.new(
credentials[:tenant_id],
credentials[:client_id],
credentials[:client_secret],
Expand All @@ -23,7 +23,7 @@ def self.provider(credentials)
end

def self.settings
client_settings = MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
client_settings = MsRestAzure2::ActiveDirectoryServiceSettings.get_azure_settings
client_settings.authentication_endpoint = AUTH_ENDPOINT
client_settings.token_audience = API_ENDPOINT
client_settings
Expand Down
18 changes: 9 additions & 9 deletions lib/train/transports/clients/azure/vault.rb
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
require "azure_mgmt_key_vault"
require "azure_mgmt_key_vault2"

# Wrapper class for ::Azure::KeyVault::Profiles::Latest::Mgmt::Client allowing custom configuration,
# for example, defining additional settings for the ::MsRestAzure::ApplicationTokenProvider.
# Wrapper class for ::Azure::KeyVault2::Profiles::Latest::Mgmt::Client allowing custom configuration,
# for example, defining additional settings for the ::MsRestAzure2::ApplicationTokenProvider.
class Vault
AUTH_ENDPOINT = MsRestAzure::AzureEnvironments::AzureCloud.active_directory_endpoint_url
AUTH_ENDPOINT = MsRestAzure2::AzureEnvironments::AzureCloud.active_directory_endpoint_url
RESOURCE_ENDPOINT = "https://vault.azure.net".freeze

def self.client(vault_name, credentials)
raise ::Train::UserError, "Vault Name cannot be nil" if vault_name.nil?

credentials[:credentials] = ::MsRest::TokenCredentials.new(provider(credentials))
credentials[:credentials] = ::MsRest2::TokenCredentials.new(provider(credentials))
credentials[:base_url] = api_endpoint(vault_name)

::Azure::KeyVault::Profiles::Latest::Mgmt::Client.new(credentials)
::Azure::KeyVault2::Profiles::Latest::Mgmt::Client.new(credentials)
end

def self.provider(credentials)
::MsRestAzure::ApplicationTokenProvider.new(
::MsRestAzure2::ApplicationTokenProvider.new(
credentials[:tenant_id],
credentials[:client_id],
credentials[:client_secret],
Expand All @@ -25,11 +25,11 @@ def self.provider(credentials)
end

def self.api_endpoint(vault_name)
"https://#{vault_name}#{MsRestAzure::AzureEnvironments::AzureCloud.key_vault_dns_suffix}"
"https://#{vault_name}#{MsRestAzure2::AzureEnvironments::AzureCloud.key_vault_dns_suffix}"
end

def self.settings
client_settings = MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
client_settings = MsRestAzure2::ActiveDirectoryServiceSettings.get_azure_settings
client_settings.authentication_endpoint = AUTH_ENDPOINT
client_settings.token_audience = RESOURCE_ENDPOINT
client_settings
Expand Down
22 changes: 11 additions & 11 deletions test/unit/transports/azure_test.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require "helper"

# Required because this test file acesses classes under Azure::
require "azure_mgmt_resources"
require "azure_graph_rbac"
require "azure_mgmt_key_vault"
require "azure_mgmt_resources2"
require "azure_graph_rbac2"
require "azure_mgmt_key_vault2"

describe "azure transport" do
def transport(options = nil)
Expand Down Expand Up @@ -78,25 +78,25 @@ def initialize(hash)
end

it "can use azure_client default client" do
management_api_client = Azure::Resources::Profiles::Latest::Mgmt::Client
management_api_client = Azure::Resources2::Profiles::Latest::Mgmt::Client
client = connection.azure_client
_(client.class).must_equal management_api_client
end

it "can use azure_client graph client" do
graph_api_client = Azure::GraphRbac::Profiles::Latest::Client
graph_api_client = Azure::GraphRbac2::Profiles::Latest::Client
client = connection.azure_client(graph_api_client)
_(client.class).must_equal graph_api_client
end

it "can use azure_client vault client" do
vault_api_client = ::Azure::KeyVault::Profiles::Latest::Mgmt::Client
vault_api_client = ::Azure::KeyVault2::Profiles::Latest::Mgmt::Client
client = connection.azure_client(vault_api_client, vault_name: "Test Vault")
_(client.class).must_equal vault_api_client
end

it "cannot instantiate azure_client vault client without a vault name" do
vault_api_client = ::Azure::KeyVault::Profiles::Latest::Mgmt::Client
vault_api_client = ::Azure::KeyVault2::Profiles::Latest::Mgmt::Client
assert_raises(Train::UserError) do
connection.azure_client(vault_api_client)
end
Expand All @@ -107,9 +107,9 @@ def initialize(hash)
it "validate credentials" do
connection.connect
token = credentials[:credentials].instance_variable_get(:@token_provider)
_(token.class).must_equal MsRestAzure::ApplicationTokenProvider
_(token.class).must_equal MsRestAzure2::ApplicationTokenProvider

_(credentials[:credentials].class).must_equal MsRest::TokenCredentials
_(credentials[:credentials].class).must_equal MsRest2::TokenCredentials
_(credentials[:tenant_id]).must_equal "test_tenant_id"
_(credentials[:client_id]).must_equal "test_client_id"
_(credentials[:client_secret]).must_equal "test_client_secret"
Expand All @@ -123,9 +123,9 @@ def initialize(hash)

connection.connect
token = credentials[:credentials].instance_variable_get(:@token_provider)
_(token.class).must_equal MsRestAzure::MSITokenProvider
_(token.class).must_equal MsRestAzure2::MSITokenProvider

_(credentials[:credentials].class).must_equal MsRest::TokenCredentials
_(credentials[:credentials].class).must_equal MsRest2::TokenCredentials
_(credentials[:tenant_id]).must_equal "test_tenant_id"
_(credentials[:subscription_id]).must_equal "test_subscription_id"
_(credentials[:client_id]).must_be_nil
Expand Down
8 changes: 3 additions & 5 deletions train.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,9 @@ Gem::Specification.new do |spec|

# azure, docker, gcp dependencies
spec.add_dependency "inifile", "~> 3.0"
spec.add_dependency "azure_graph_rbac", "~> 0.16"
spec.add_dependency "azure_mgmt_key_vault", "~> 0.17"
spec.add_dependency "azure_mgmt_resources", "~> 0.15"
spec.add_dependency "azure_mgmt_security", "~> 0.18"
spec.add_dependency "azure_mgmt_storage", "~> 0.18"
spec.add_dependency "azure_graph_rbac2", "~> 0.18.0"
spec.add_dependency "azure_mgmt_key_vault2", "~> 0.18.0"
spec.add_dependency "azure_mgmt_resources2", "~> 1.1"
spec.add_dependency "docker-api", ">= 1.26", "< 3.0"
spec.add_dependency "googleauth", ">= 0.16.2", "< 1.9.0"
spec.add_dependency "google-apis-admin_directory_v1", "~> 0.46.0"
Expand Down