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
56
57
58
59
# File 'lib/azure/base_management/base_management_service.rb', line 32

def initialize
  validate_configuration
  cert_file = nil
  begin
    if Azure.config.management_certificate =~ /(pem)$/
      cert_file = File.read(Azure.config.management_certificate)
      certificate_key = OpenSSL::X509::Certificate.new(cert_file)
      private_key = OpenSSL::PKey::RSA.new(cert_file)
    else
      # Parse pfx content
      File.open(Azure.config.management_certificate, "rb") do |f|
          cert_file = f.read
      end
      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 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



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 = 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



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 = 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



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 = 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



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 = 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



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

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



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

#validate_configurationObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/azure/base_management/base_management_service.rb', line 61

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