lib/fog/azurerm/resources.rb
module Fog
module Resources
# This class registers models, requests and collections
class AzureRM < Fog::Service
requires :tenant_id
requires :client_id
requires :client_secret
requires :subscription_id
recognizes :environment
request_path 'fog/azurerm/requests/resources'
request :create_resource_group
request :list_resource_groups
request :delete_resource_group
request :get_resource_group
request :check_resource_group_exists
request :create_deployment
request :delete_deployment
request :list_deployments
request :get_deployment
request :check_deployment_exists
request :delete_resource_tag
request :list_tagged_resources
request :tag_resource
request :check_azure_resource_exists
request :list_resources_in_resource_group
model_path 'fog/azurerm/models/resources'
model :resource_group
collection :resource_groups
model :deployment
collection :deployments
model :dependency
model :provider
model :provider_resource_type
model :azure_resource
collection :azure_resources
# This class provides the mock implementation for unit tests.
class Mock
def initialize(_options = {})
begin
require 'azure_mgmt_resources'
rescue LoadError => e
retry if require('rubygems')
raise e.message
end
end
end
# This class provides the actual implementation for service calls.
class Real
def initialize(options)
begin
require 'azure_mgmt_resources'
rescue LoadError => e
retry if require('rubygems')
raise e.message
end
options[:environment] = 'AzureCloud' if options[:environment].nil?
credentials = Fog::Credentials::AzureRM.get_credentials(options[:tenant_id], options[:client_id], options[:client_secret], options[:environment])
telemetry = "fog-azure-rm/#{Fog::AzureRM::VERSION}"
@rmc = ::Azure::ARM::Resources::ResourceManagementClient.new(credentials, resource_manager_endpoint_url(options[:environment]))
@rmc.subscription_id = options[:subscription_id]
@rmc.add_user_agent_information(telemetry)
end
end
end
end
end