Top Level Namespace

Defined Under Namespace

Modules: Fog

Constant Summary collapse

LOCATION =
'eastus'.freeze
AZURE_RESOURCE =
'https://management.azure.com'.freeze
DEFAULT_ADDRESS_PREFIXES =
['10.2.0.0/16'].freeze
SUBNET =
'Subnet'.freeze
PUBLIC_IP =
'Public-IP-Address'.freeze
NETWORK_SECURITY_GROUP =
'Network-Security-Group'.freeze
STANDARD_STORAGE =
'Standard'.freeze
PREMIUM_STORAGE =
'Premium'.freeze
ALLOWED_STANDARD_REPLICATION =
%w(LRS ZRS GRS RAGRS).freeze
API_VERSION =
'2016-06-01'.freeze
FAULT_DOMAIN_COUNT =
3
UPDATE_DOMAIN_COUNT =
5
WINDOWS =
'windows'.freeze
VPN =
'Vpn'.freeze
MICROSOFT_PEERING =
'MicrosoftPeering'.freeze
RESOURCE_GROUP_NAME =
4
RESOURCE_PROVIDER_NAMESPACE =
6
RESOURCE_TYPE =
7
RESOURCE_NAME =
8
ENDPOINT_PREFIX =
'Microsoft.Network/trafficManagerProfiles'.freeze
DISK_PREFIX =
'Microsoft.Compute/disks'
AZURE_ENDPOINTS =
'azureEndpoints'.freeze
EXTERNAL_ENDPOINTS =
'externalEndpoints'.freeze
NESTED_ENDPOINTS =
'nestedEndpoints'.freeze
GLOBAL =
'global'.freeze
UPLOAD_BLOB_WORKER_THREAD_COUNT =
8
VM_NAME_POSITION =
8
PRIMARY_NIC_INDEX =
0
ENVIRONMENT_AZURE_CLOUD =
'AzureCloud'.freeze
ENVIRONMENT_AZURE_CHINA_CLOUD =
'AzureChinaCloud'.freeze
ENVIRONMENT_AZURE_US_GOVERNMENT =
'AzureUSGovernment'.freeze
ENVIRONMENT_AZURE_GERMAN_CLOUD =
'AzureGermanCloud'.freeze
ERROR_CODE_RESOURCE_NOT_FOUND =

MsRestAzure::AzureOperationError class Error Codes

'ResourceNotFound'.freeze
ERROR_CODE_NOT_FOUND =
'NotFound'.freeze
PLATFORM_LINUX =
'linux'.freeze
COPY_STATUS =

State of the copy operation

{
  # The copy completed successfully.
  SUCCESS: 'success',
  # The copy is in progress
  PENDING: 'pending'
}.freeze
SINGLE_BLOB_PUT_THRESHOLD =

msdn.microsoft.com/en-us/library/azure/dd179451.aspx The maximum size for a block blob created via Put Blob is 64 MB. But for better performance, this size should be 32 MB. If your blob is larger than 32 MB, you must upload it as a set of blocks.

32 * 1024 * 1024
MAXIMUM_CHUNK_SIZE =

Block blob: msdn.microsoft.com/en-us/library/azure/dd135726.aspx Page blob: msdn.microsoft.com/en-us/library/azure/ee691975.aspx Each block/page can be a different size, up to a maximum of 4 MB

4 * 1024 * 1024
HASH_OF_4MB_EMPTY_CONTENT =

The hash value of 4MB empty content

'b5cfa9d6c8febd618f91ac2843d50a1c'.freeze
REST_CLIENT_API_VERSION =
%w(2014-04-01-preview 2016-05-01).freeze
IAAS_VM_BACKUP_REQUEST =
'IaasVMBackupRequest'.freeze
WHITE_SPACE =
' '.freeze
CONFIGURE_BACKUP =
'ConfigureBackup'.freeze
PROTECTION_STOPPED =
'ProtectionStopped'.freeze

Instance Method Summary collapse

Instance Method Details

#active_directory_service_settings(environment = ENVIRONMENT_AZURE_CLOUD) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/fog/azurerm/utilities/general.rb', line 83

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

#current_timeObject



133
134
135
136
# File 'lib/fog/azurerm/utilities/general.rb', line 133

def current_time
  time = Time.now.to_f.to_s
  time.split(/\W+/).join
end

#get_blob_endpoint(storage_account_name, enable_https = false, environment = ENVIRONMENT_AZURE_CLOUD) ⇒ Object



128
129
130
131
# File 'lib/fog/azurerm/utilities/general.rb', line 128

def get_blob_endpoint(, enable_https = false, environment = ENVIRONMENT_AZURE_CLOUD)
  protocol = enable_https ? 'https' : 'http'
  "#{protocol}://#{}.blob#{storage_endpoint_suffix(environment)}"
end

#get_circuit_name_from_id(circuit_id) ⇒ Object

Pick Express Route Circuit name from Id(String)



41
42
43
# File 'lib/fog/azurerm/utilities/general.rb', line 41

def get_circuit_name_from_id(circuit_id)
  circuit_id.split('/')[8]
end

#get_end_point_type(endpoint_type) ⇒ Object

Extract Endpoint type from (String)



17
18
19
# File 'lib/fog/azurerm/utilities/general.rb', line 17

def get_end_point_type(endpoint_type)
  endpoint_type.split('/')[2]
end

#get_hash_from_object(object) ⇒ Object



29
30
31
32
33
# File 'lib/fog/azurerm/utilities/general.rb', line 29

def get_hash_from_object(object)
  hash = {}
  object.instance_variables.each { |attr| hash[attr.to_s.delete('@')] = object.instance_variable_get(attr) }
  hash
end

#get_record_set_from_id(id) ⇒ Object



21
22
23
# File 'lib/fog/azurerm/utilities/general.rb', line 21

def get_record_set_from_id(id)
  id.split('/')[8]
end

#get_record_type(type) ⇒ Object



45
46
47
# File 'lib/fog/azurerm/utilities/general.rb', line 45

def get_record_type(type)
  type.split('/').last
end

#get_resource_from_resource_id(resource_id, position) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/fog/azurerm/utilities/general.rb', line 71

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

  data[position]
end

#get_resource_group_from_id(id) ⇒ Object

Pick Resource Group name from Azure Resource Id(String)



2
3
4
# File 'lib/fog/azurerm/utilities/general.rb', line 2

def get_resource_group_from_id(id)
  id.split('/')[4]
end

#get_traffic_manager_profile_name_from_endpoint_id(endpoint_id) ⇒ Object

Extract Traffic Manager Profile Name from Endpoint id(String)



36
37
38
# File 'lib/fog/azurerm/utilities/general.rb', line 36

def get_traffic_manager_profile_name_from_endpoint_id(endpoint_id)
  endpoint_id.split('/')[8]
end

#get_type_from_recordset_type(type) ⇒ Object



25
26
27
# File 'lib/fog/azurerm/utilities/general.rb', line 25

def get_type_from_recordset_type(type)
  type.split('/')[2]
end

#get_virtual_machine_from_id(vme_id) ⇒ Object

Pick Virtual Machine name from Virtual Machine Extension Id(String)



12
13
14
# File 'lib/fog/azurerm/utilities/general.rb', line 12

def get_virtual_machine_from_id(vme_id)
  vme_id.split('/')[VM_NAME_POSITION]
end

#get_virtual_network_from_id(subnet_id) ⇒ Object

Pick Virtual Network name from Subnet Resource Id(String)



7
8
9
# File 'lib/fog/azurerm/utilities/general.rb', line 7

def get_virtual_network_from_id(subnet_id)
  subnet_id.split('/')[8]
end

#parse_storage_object(object) ⇒ Object

Parse storage blob/container to a hash



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/fog/azurerm/utilities/general.rb', line 139

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

#raise_azure_exception(exception, msg) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fog/azurerm/utilities/general.rb', line 49

def raise_azure_exception(exception, msg)
  if exception.respond_to? 'body'
    message = if exception.body['error'].nil?
                exception.body['message']
              else
                exception.body['error']['message']
              end
    exception_message = "Exception in #{msg} #{message} Type: #{exception.class}\n#{exception.backtrace.join("\n")}"
  else
    "#{exception.inspect}\n#{exception.backtrace.join("\n")}"
  end

  Fog::Logger.debug exception.backtrace
  raise exception_message
end

#random_string(length) ⇒ Object



79
80
81
# File 'lib/fog/azurerm/utilities/general.rb', line 79

def random_string(length)
  (0...length).map { ('a'..'z').to_a[rand(26)] }.join
end

#resource_manager_endpoint_url(environment = ENVIRONMENT_AZURE_CLOUD) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/fog/azurerm/utilities/general.rb', line 96

def resource_manager_endpoint_url(environment = ENVIRONMENT_AZURE_CLOUD)
  case environment
  when ENVIRONMENT_AZURE_CHINA_CLOUD
    MsRestAzure::AzureEnvironments::AzureChina.resource_manager_endpoint_url
  when ENVIRONMENT_AZURE_US_GOVERNMENT
    MsRestAzure::AzureEnvironments::AzureUSGovernment.resource_manager_endpoint_url
  when ENVIRONMENT_AZURE_GERMAN_CLOUD
    MsRestAzure::AzureEnvironments::AzureGermanCloud.resource_manager_endpoint_url
  else
    MsRestAzure::AzureEnvironments::Azure.resource_manager_endpoint_url
  end
end

#storage_endpoint_suffix(environment = ENVIRONMENT_AZURE_CLOUD) ⇒ Object

storage_endpoint_suffix is nil in ms_rest_azure 0.6.2 Reference the issue: github.com/Azure/azure-sdk-for-ruby/issues/603



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/fog/azurerm/utilities/general.rb', line 111

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

#validate_params(required_params, input_params) ⇒ Object

Make sure if input_params(Hash) contains all keys present in required_params(Array)

Raises:

  • (ArgumentError)


66
67
68
69
# File 'lib/fog/azurerm/utilities/general.rb', line 66

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