lib/fog/azurerm/utilities/general.rb in gitlab-fog-azure-rm-1.3.0 vs lib/fog/azurerm/utilities/general.rb in gitlab-fog-azure-rm-1.4.0
- old
+ new
@@ -1,195 +1,204 @@
require File.expand_path('../../custom_fog_errors.rb', __FILE__)
-# Pick Resource Group name from Azure Resource Id(String)
-def get_resource_group_from_id(id)
- id.split('/')[4]
-end
+module Fog
+ module AzureRM
+ module Utilities
+ # General utilities mixin.
+ module General # rubocop:disable Metrics/ModuleLength
+ # Pick Resource Group name from Azure Resource Id(String)
+ def get_resource_group_from_id(id)
+ id.split('/')[4]
+ end
-# Pick Virtual Network name from Subnet Resource Id(String)
-def get_virtual_network_from_id(subnet_id)
- subnet_id.split('/')[8]
-end
+ # Pick Virtual Network name from Subnet Resource Id(String)
+ def get_virtual_network_from_id(subnet_id)
+ subnet_id.split('/')[8]
+ end
-# Pick Virtual Machine name from Virtual Machine Extension Id(String)
-def get_virtual_machine_from_id(vme_id)
- vme_id.split('/')[VM_NAME_POSITION]
-end
+ # Pick Virtual Machine name from Virtual Machine Extension Id(String)
+ def get_virtual_machine_from_id(vme_id)
+ vme_id.split('/')[VM_NAME_POSITION]
+ end
-# Extract Endpoint type from (String)
-def get_end_point_type(endpoint_type)
- endpoint_type.split('/')[2]
-end
+ # Extract Endpoint type from (String)
+ def get_end_point_type(endpoint_type)
+ endpoint_type.split('/')[2]
+ end
-def get_record_set_from_id(id)
- id.split('/')[8]
-end
+ def get_record_set_from_id(id)
+ id.split('/')[8]
+ end
-def get_type_from_recordset_type(type)
- type.split('/')[2]
-end
+ def get_type_from_recordset_type(type)
+ type.split('/')[2]
+ end
-def get_hash_from_object(object)
- hash = {}
- object.instance_variables.each { |attr| hash[attr.to_s.delete('@')] = object.instance_variable_get(attr) }
- hash
-end
+ def get_hash_from_object(object)
+ hash = {}
+ object.instance_variables.each { |attr| hash[attr.to_s.delete('@')] = object.instance_variable_get(attr) }
+ hash
+ end
-# Extract Traffic Manager Profile Name from Endpoint id(String)
-def get_traffic_manager_profile_name_from_endpoint_id(endpoint_id)
- endpoint_id.split('/')[8]
-end
+ # Extract Traffic Manager Profile Name from Endpoint id(String)
+ def get_traffic_manager_profile_name_from_endpoint_id(endpoint_id)
+ endpoint_id.split('/')[8]
+ end
-# Pick Express Route Circuit name from Id(String)
-def get_circuit_name_from_id(circuit_id)
- circuit_id.split('/')[8]
-end
+ # Pick Express Route Circuit name from Id(String)
+ def get_circuit_name_from_id(circuit_id)
+ circuit_id.split('/')[8]
+ end
-def get_record_type(type)
- type.split('/').last
-end
+ def get_record_type(type)
+ type.split('/').last
+ end
-def raise_azure_exception(exception, msg)
- raise Fog::AzureRM::CustomAzureCoreHttpError.new(exception) if exception.is_a?(Azure::Core::Http::HTTPError)
- raise exception unless exception.is_a?(MsRestAzure::AzureOperationError)
+ def raise_azure_exception(exception, msg)
+ raise Fog::AzureRM::CustomAzureCoreHttpError.new(exception) if exception.is_a?(Azure::Core::Http::HTTPError)
+ raise exception unless exception.is_a?(MsRestAzure::AzureOperationError)
- azure_operation_error = Fog::AzureRM::CustomAzureOperationError.new(msg, exception)
- azure_operation_error.print_subscription_limits_information if !azure_operation_error.request.nil? && !azure_operation_error.response.nil?
- raise azure_operation_error
-end
+ azure_operation_error = Fog::AzureRM::CustomAzureOperationError.new(msg, exception)
+ azure_operation_error.print_subscription_limits_information if !azure_operation_error.request.nil? && !azure_operation_error.response.nil?
+ raise azure_operation_error
+ end
-# Make sure if input_params(Hash) contains all keys present in required_params(Array)
-def validate_params(required_params, input_params)
- missing_params = required_params.select { |param| param unless input_params.key?(param) }
- raise(ArgumentError, "Missing Parameters: #{missing_params.join(', ')} required for this operation") if missing_params.any?
-end
+ # Make sure if input_params(Hash) contains all keys present in required_params(Array)
+ def validate_params(required_params, input_params)
+ missing_params = required_params.select { |param| param unless input_params.key?(param) }
+ raise(ArgumentError, "Missing Parameters: #{missing_params.join(', ')} required for this operation") if missing_params.any?
+ end
-def get_resource_from_resource_id(resource_id, position)
- data = resource_id.split('/') unless resource_id.nil?
+ def get_resource_from_resource_id(resource_id, position)
+ data = resource_id.split('/') unless resource_id.nil?
- raise 'Invalid Resource ID' if data.count < 9 && data.count != 5
+ raise 'Invalid Resource ID' if data.count < 9 && data.count != 5
- data[position]
-end
+ data[position]
+ end
-def random_string(length)
- (0...length).map { ('a'..'z').to_a[rand(26)] }.join
-end
+ def random_string(length)
+ (0...length).map { ('a'..'z').to_a[rand(26)] }.join
+ end
-def active_directory_service_settings(environment = ENVIRONMENT_AZURE_CLOUD)
- case environment
- when ENVIRONMENT_AZURE_CHINA_CLOUD
- MsRestAzure::ActiveDirectoryServiceSettings.get_azure_china_settings
- when ENVIRONMENT_AZURE_US_GOVERNMENT
- MsRestAzure::ActiveDirectoryServiceSettings.get_azure_us_government_settings
- when ENVIRONMENT_AZURE_GERMAN_CLOUD
- MsRestAzure::ActiveDirectoryServiceSettings.get_azure_german_settings
- else
- MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
- end
-end
+ def active_directory_service_settings(environment = ENVIRONMENT_AZURE_CLOUD)
+ case environment
+ when ENVIRONMENT_AZURE_CHINA_CLOUD
+ MsRestAzure::ActiveDirectoryServiceSettings.get_azure_china_settings
+ when ENVIRONMENT_AZURE_US_GOVERNMENT
+ MsRestAzure::ActiveDirectoryServiceSettings.get_azure_us_government_settings
+ when ENVIRONMENT_AZURE_GERMAN_CLOUD
+ MsRestAzure::ActiveDirectoryServiceSettings.get_azure_german_settings
+ else
+ MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
+ end
+ end
-def resource_manager_endpoint_url(environment = ENVIRONMENT_AZURE_CLOUD)
- case environment
- when ENVIRONMENT_AZURE_CHINA_CLOUD
- MsRestAzure::AzureEnvironments::ChinaCloud.resource_manager_endpoint_url
- when ENVIRONMENT_AZURE_US_GOVERNMENT
- MsRestAzure::AzureEnvironments::USGovernment.resource_manager_endpoint_url
- when ENVIRONMENT_AZURE_GERMAN_CLOUD
- MsRestAzure::AzureEnvironments::GermanCloud.resource_manager_endpoint_url
- else
- MsRestAzure::AzureEnvironments::AzureCloud.resource_manager_endpoint_url
- end
-end
+ def resource_manager_endpoint_url(environment = ENVIRONMENT_AZURE_CLOUD)
+ case environment
+ when ENVIRONMENT_AZURE_CHINA_CLOUD
+ MsRestAzure::AzureEnvironments::ChinaCloud.resource_manager_endpoint_url
+ when ENVIRONMENT_AZURE_US_GOVERNMENT
+ MsRestAzure::AzureEnvironments::USGovernment.resource_manager_endpoint_url
+ when ENVIRONMENT_AZURE_GERMAN_CLOUD
+ MsRestAzure::AzureEnvironments::GermanCloud.resource_manager_endpoint_url
+ else
+ MsRestAzure::AzureEnvironments::AzureCloud.resource_manager_endpoint_url
+ end
+ end
-# storage_endpoint_suffix is nil in ms_rest_azure 0.6.2
-# Reference the issue: https://github.com/Azure/azure-sdk-for-ruby/issues/603
-def storage_endpoint_suffix(environment = ENVIRONMENT_AZURE_CLOUD)
- case environment
- when ENVIRONMENT_AZURE_CHINA_CLOUD
- # MsRestAzure::AzureEnvironments::AzureChina.storage_endpoint_suffix
- '.core.chinacloudapi.cn'
- when ENVIRONMENT_AZURE_US_GOVERNMENT
- # MsRestAzure::AzureEnvironments::AzureUSGovernment.storage_endpoint_suffix
- '.core.usgovcloudapi.net'
- when ENVIRONMENT_AZURE_GERMAN_CLOUD
- # MsRestAzure::AzureEnvironments::AzureGermanCloud.storage_endpoint_suffix
- '.core.cloudapi.de'
- else
- # MsRestAzure::AzureEnvironments::Azure.storage_endpoint_suffix
- '.core.windows.net'
- end
-end
+ # storage_endpoint_suffix is nil in ms_rest_azure 0.6.2
+ # Reference the issue: https://github.com/Azure/azure-sdk-for-ruby/issues/603
+ def storage_endpoint_suffix(environment = ENVIRONMENT_AZURE_CLOUD)
+ case environment
+ when ENVIRONMENT_AZURE_CHINA_CLOUD
+ # MsRestAzure::AzureEnvironments::AzureChina.storage_endpoint_suffix
+ '.core.chinacloudapi.cn'
+ when ENVIRONMENT_AZURE_US_GOVERNMENT
+ # MsRestAzure::AzureEnvironments::AzureUSGovernment.storage_endpoint_suffix
+ '.core.usgovcloudapi.net'
+ when ENVIRONMENT_AZURE_GERMAN_CLOUD
+ # MsRestAzure::AzureEnvironments::AzureGermanCloud.storage_endpoint_suffix
+ '.core.cloudapi.de'
+ else
+ # MsRestAzure::AzureEnvironments::Azure.storage_endpoint_suffix
+ '.core.windows.net'
+ end
+ end
-def get_blob_endpoint(storage_account_name, enable_https = false, environment = ENVIRONMENT_AZURE_CLOUD)
- protocol = enable_https ? 'https' : 'http'
- "#{protocol}://#{storage_account_name}.blob#{storage_endpoint_suffix(environment)}"
-end
+ def get_blob_endpoint(storage_account_name, enable_https = false, environment = ENVIRONMENT_AZURE_CLOUD)
+ protocol = enable_https ? 'https' : 'http'
+ "#{protocol}://#{storage_account_name}.blob#{storage_endpoint_suffix(environment)}"
+ end
-def get_blob_endpoint_with_domain(storage_account_name, enable_https = false, domain = 'blob.core.windows.net')
- protocol = enable_https ? 'https' : 'http'
- "#{protocol}://#{storage_account_name}.#{domain}"
-end
+ def get_blob_endpoint_with_domain(storage_account_name, enable_https = false, domain = 'blob.core.windows.net')
+ protocol = enable_https ? 'https' : 'http'
+ "#{protocol}://#{storage_account_name}.#{domain}"
+ end
-def current_time
- time = Time.now.to_f.to_s
- time.split(/\W+/).join
-end
+ def current_time
+ time = Time.now.to_f.to_s
+ time.split(/\W+/).join
+ end
-# Parse storage blob/container to a hash
-def parse_storage_object(object)
- data = {}
- if object.is_a? Hash
- object.each do |k, v|
- if k == 'properties'
- v.each do |j, l|
- data[j] = l
+ # Parse storage blob/container to a hash
+ def parse_storage_object(object)
+ data = {}
+ if object.is_a? Hash
+ object.each do |k, v|
+ if k == 'properties'
+ v.each do |j, l|
+ data[j] = l
+ end
+ else
+ data[k] = v
+ end
+ end
+ else
+ object.instance_variables.each do |p|
+ kname = p.to_s.delete('@')
+ if kname == 'properties'
+ properties = object.instance_variable_get(p)
+ properties.each do |k, v|
+ data[k.to_s] = v
+ end
+ else
+ data[kname] = object.instance_variable_get(p)
+ end
+ end
+ end
+
+ data['last_modified'] = Time.parse(data['last_modified'])
+ data['etag'].delete!('"')
+ data
end
- else
- data[k] = v
- end
- end
- else
- object.instance_variables.each do |p|
- kname = p.to_s.delete('@')
- if kname == 'properties'
- properties = object.instance_variable_get(p)
- properties.each do |k, v|
- data[k.to_s] = v
+
+ def resource_not_found?(azure_operation_error)
+ is_found = false
+ if azure_operation_error.response.status == HTTP_NOT_FOUND
+ if azure_operation_error.body['code']
+ is_found = azure_operation_error.body['code'] == ERROR_CODE_NOT_FOUND
+ elsif azure_operation_error.body['error']
+ is_found = azure_operation_error.body['error']['code'] == ERROR_CODE_NOT_FOUND ||
+ azure_operation_error.body['error']['code'] == ERROR_CODE_RESOURCE_GROUP_NOT_FOUND ||
+ azure_operation_error.body['error']['code'] == ERROR_CODE_RESOURCE_NOT_FOUND ||
+ azure_operation_error.body['error']['code'] == ERROR_CODE_PARENT_RESOURCE_NOT_FOUND
+ end
+ end
+ is_found
end
- else
- data[kname] = object.instance_variable_get(p)
- end
- end
- end
- data['last_modified'] = Time.parse(data['last_modified'])
- data['etag'].delete!('"')
- data
-end
+ def get_image_name(id)
+ id.split('/').last
+ end
-def resource_not_found?(azure_operation_error)
- is_found = false
- if azure_operation_error.response.status == HTTP_NOT_FOUND
- if azure_operation_error.body['code']
- is_found = azure_operation_error.body['code'] == ERROR_CODE_NOT_FOUND
- elsif azure_operation_error.body['error']
- is_found = azure_operation_error.body['error']['code'] == ERROR_CODE_NOT_FOUND ||
- azure_operation_error.body['error']['code'] == ERROR_CODE_RESOURCE_GROUP_NOT_FOUND ||
- azure_operation_error.body['error']['code'] == ERROR_CODE_RESOURCE_NOT_FOUND ||
- azure_operation_error.body['error']['code'] == ERROR_CODE_PARENT_RESOURCE_NOT_FOUND
+ def get_subscription_id(id)
+ id.split('/')[2]
+ end
+
+ def remove_trailing_periods_from_path_segments(path)
+ path.split('/').map { |segment| segment.gsub(/\.*$/, '') }.join('/')
+ end
+ end
end
end
- is_found
-end
-
-def get_image_name(id)
- id.split('/').last
-end
-
-def get_subscription_id(id)
- id.split('/')[2]
-end
-
-def remove_trailing_periods_from_path_segments(path)
- path.split('/').map { |segment| segment.gsub(/\.*$/, '') }.join('/')
end