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.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/azure/base_management/base_management_service.rb', line 32

def initialize
  validate_configuration
  cert_file = File.read(Azure.config.management_certificate)
  begin
    if Azure.config.management_certificate =~ /(pem)$/
      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(Base64.decode64(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 Exception => 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/windowsazure/gg715317.aspx

Returns: None



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/azure/base_management/base_management_service.rb', line 116

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 = ManagementHttpRequest.new(:post, request_path, body)
    request.call
    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/windowsazure/gg715314.aspx

Returns: None



177
178
179
180
181
182
183
184
# File 'lib/azure/base_management/base_management_service.rb', line 177

def delete_affinity_group(name)
  if affinity_group(name)
    request_path = "/affinitygroups/#{name}"
    request = ManagementHttpRequest.new(:delete, request_path)
    request.call
    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/windowsazure/ee460789.aspx

Returns: Azure::BaseManagement::AffinityGroup object



196
197
198
199
200
201
202
203
# File 'lib/azure/base_management/base_management_service.rb', line 196

def get_affinity_group(name)
  if affinity_group(name)
    request_path = "/affinitygroups/#{name}"
    request = 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/windowsazure/ee460797.aspx

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



90
91
92
93
94
95
# File 'lib/azure/base_management/base_management_service.rb', line 90

def list_affinity_groups
  request_path = '/affinitygroups'
  request = 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



78
79
80
81
82
# File 'lib/azure/base_management/base_management_service.rb', line 78

def list_locations
  request = ManagementHttpRequest.new(:get, '/locations')
  response = request.call
  Serialization.locations_from_xml(response)
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/windowsazure/gg715316.aspx

Returns: None



157
158
159
160
161
162
163
164
165
166
# File 'lib/azure/base_management/base_management_service.rb', line 157

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 = ManagementHttpRequest.new(:put, request_path, body)
    request.call
    Loggerx.info "Affinity Group #{name} is updated."
  end
end

#validate_configurationObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/azure/base_management/base_management_service.rb', line 57

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
  error_message = "Could not read from file '#{m_cert}'."
  raise error_message unless test('r', m_cert)

  m_cert = Azure.config.management_certificate
  error_message = 'Management certificate expects a .pem or .pfx file.'
  raise error_message unless m_cert =~ /(pem|pfx)$/
end