Class: Azure::BaseManagement::BaseManagementService

Inherits:
Object
  • Object
show all
Defined in:
lib/azure/base_management/base_management_service.rb

Instance Method Summary collapse

Constructor Details

#initializeBaseManagementService

Returns a new instance of BaseManagementService.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/azure/base_management/base_management_service.rb', line 23

def initialize
  validate_configuration
  cert_file = Azure.config.management_certificate
  cert_file = read_cert_from_file(cert_file) if File.file?(cert_file)

  begin
    if cert_file =~ /-----BEGIN CERTIFICATE-----/
      certificate_key = OpenSSL::X509::Certificate.new(cert_file)
      private_key = OpenSSL::PKey::RSA.new(cert_file)
    else
    # Parse pfx content
      cert_content = OpenSSL::PKCS12.new(cert_file)
      certificate_key = OpenSSL::X509::Certificate.new(
        cert_content.certificate.to_pem
      )
      private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
    end
  rescue OpenSSL::OpenSSLError => e
    raise "Management certificate not valid. Error: #{e.message}"
  end

  Azure.configure do |config|
    config.http_certificate_key = certificate_key
    config.http_private_key = private_key
  end
end

Instance Method Details

#create_affinity_group(name, location, label, options = {}) ⇒ Object

Public: Creates a new affinity group for the specified subscription.

Attributes

  • name - String. Affinity Group name.

  • location - String. The location where the affinity group will

be created.

  • label - String. Name for the affinity specified as a

base-64 encoded string.

Options

Accepted key/value pairs are:

  • :description - String. A description for the affinity group.

(optional)

See msdn.microsoft.com/en-us/library/azure/gg715317.aspx

Returns: None



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/azure/base_management/base_management_service.rb', line 120

def create_affinity_group(name, location, label, options = {})
  if name.nil? || name.strip.empty?
    raise 'Affinity Group name cannot be empty'
  elsif list_affinity_groups.map(&:name).include?(name)
    raise Azure::Error::Error.new(
      'ConflictError',
      409,
      "An affinity group #{name}"\
      " already exists in the current subscription."
    )
  else
    validate_location(location)
    body = Serialization.affinity_group_to_xml(name,
                                               location,
                                               label,
                                               options)
    request_path = '/affinitygroups'
    request = Azure::BaseManagement::ManagementHttpRequest.new(:post, request_path, body)
    request.call
    Azure::Loggerx.info "Affinity Group #{name} is created."
  end
end

#delete_affinity_group(name) ⇒ Object

Public: Deletes an affinity group in the specified subscription

Attributes

  • name - String. Affinity Group name.

See msdn.microsoft.com/en-us/library/azure/gg715314.aspx

Returns: None



181
182
183
184
185
186
187
188
# File 'lib/azure/base_management/base_management_service.rb', line 181

def delete_affinity_group(name)
  if affinity_group(name)
    request_path = "/affinitygroups/#{name}"
    request = Azure::BaseManagement::ManagementHttpRequest.new(:delete, request_path)
    request.call
    Azure::Loggerx.info "Deleted affinity group #{name}."
  end
end

#get_affinity_group(name) ⇒ Object

Public: returns the system properties associated with the specified affinity group.

Attributes

  • name - String. Affinity Group name.

See msdn.microsoft.com/en-us/library/azure/ee460789.aspx

Returns: Azure::BaseManagement::AffinityGroup object



200
201
202
203
204
205
206
207
# File 'lib/azure/base_management/base_management_service.rb', line 200

def get_affinity_group(name)
  if affinity_group(name)
    request_path = "/affinitygroups/#{name}"
    request = Azure::BaseManagement::ManagementHttpRequest.new(:get, request_path)
    response = request.call
    Serialization.affinity_group_from_xml(response)
  end
end

#list_affinity_groupsObject

Public: Gets a lists the affinity groups associated with the specified subscription.

See msdn.microsoft.com/en-us/library/azure/ee460797.aspx

Returns an array of Azure::BaseManagement::AffinityGroup objects



94
95
96
97
98
99
# File 'lib/azure/base_management/base_management_service.rb', line 94

def list_affinity_groups
  request_path = '/affinitygroups'
  request = Azure::BaseManagement::ManagementHttpRequest.new(:get, request_path, nil)
  response = request.call
  Serialization.affinity_groups_from_xml(response)
end

#list_locationsObject

Public: Gets a list of regional data center locations from the server

Returns an array of Azure::BaseManagement::Location objects



69
70
71
72
73
# File 'lib/azure/base_management/base_management_service.rb', line 69

def list_locations
  request = Azure::BaseManagement::ManagementHttpRequest.new(:get, '/locations')
  response = request.call
  Serialization.locations_from_xml(response)
end

#list_role_sizesObject

Public: Gets a list of role sizes associated with the specified subscription.

Returns an array of String values for role sizes



79
80
81
82
83
84
85
86
# File 'lib/azure/base_management/base_management_service.rb', line 79

def list_role_sizes
  role_sizes = []
  locations = list_locations
  locations.each do | location |
   role_sizes << location.role_sizes
  end
  role_sizes.flatten.uniq.compact.sort
end

#update_affinity_group(name, label, options = {}) ⇒ Object

Public: updates the label and/or the description for an affinity group for the specified subscription.

Attributes

  • name - String. Affinity Group name.

  • label - String. Name for the affinity specified as a

base-64 encoded string.

Options

Accepted key/value pairs are:

  • :description - String. A description for the affinity group.

(optional)

See msdn.microsoft.com/en-us/library/azure/gg715316.aspx

Returns: None



161
162
163
164
165
166
167
168
169
170
# File 'lib/azure/base_management/base_management_service.rb', line 161

def update_affinity_group(name, label, options = {})
  raise 'Label name cannot be empty' if label.nil? || label.empty?
  if affinity_group(name)
    body = Serialization.resource_to_xml(label, options)
    request_path = "/affinitygroups/#{name}"
    request = Azure::BaseManagement::ManagementHttpRequest.new(:put, request_path, body)
    request.call
    Azure::Loggerx.info "Affinity Group #{name} is updated."
  end
end

#validate_configurationObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/azure/base_management/base_management_service.rb', line 50

def validate_configuration
  subs_id = Azure.config.subscription_id
  error_message = 'Subscription ID not valid.'
  raise error_message if subs_id.nil? || subs_id.empty?

  m_ep = Azure.config.management_endpoint
  error_message = 'Management endpoint not valid.'
  raise error_message if m_ep.nil? || m_ep.empty?

  m_cert = Azure.config.management_certificate
  if File.file?(m_cert) && File.extname(m_cert).downcase =~ /(pem|pfx)$/ # validate only if input is file path
    error_message = "Could not read from file '#{m_cert}'."
    raise error_message unless test('r', m_cert)
  end
end