fog-arubacloud 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +26 -0
- data/.gitignore +15 -0
- data/.rubocop.yml +1168 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/CONTRIBUTING.md +28 -0
- data/CONTRIBUTORS.md +2 -0
- data/Gemfile +6 -0
- data/LICENSE.md +20 -0
- data/README.md +36 -0
- data/Rakefile +24 -0
- data/fog-arubacloud.gemspec +31 -0
- data/gemfiles/fog-arubacloud-0.0.1.gem +0 -0
- data/gemfiles/fog-arubacloud-0.0.2.gem +0 -0
- data/lib/fog/arubacloud.rb +31 -0
- data/lib/fog/arubacloud/compute.rb +96 -0
- data/lib/fog/arubacloud/error.rb +84 -0
- data/lib/fog/arubacloud/examples/create_pro_server.rb +53 -0
- data/lib/fog/arubacloud/examples/create_smart_server.rb +39 -0
- data/lib/fog/arubacloud/examples/get_objects.rb +44 -0
- data/lib/fog/arubacloud/examples/get_servers.rb +31 -0
- data/lib/fog/arubacloud/examples/vm_operations.rb +60 -0
- data/lib/fog/arubacloud/models/compute/disk.rb +47 -0
- data/lib/fog/arubacloud/models/compute/disks.rb +31 -0
- data/lib/fog/arubacloud/models/compute/ip.rb +45 -0
- data/lib/fog/arubacloud/models/compute/ips.rb +50 -0
- data/lib/fog/arubacloud/models/compute/network_adapter.rb +26 -0
- data/lib/fog/arubacloud/models/compute/network_adapters.rb +20 -0
- data/lib/fog/arubacloud/models/compute/server.rb +185 -0
- data/lib/fog/arubacloud/models/compute/servers.rb +43 -0
- data/lib/fog/arubacloud/models/compute/template.rb +33 -0
- data/lib/fog/arubacloud/models/compute/templates.rb +67 -0
- data/lib/fog/arubacloud/requests/compute/create_vm_pro.rb +88 -0
- data/lib/fog/arubacloud/requests/compute/create_vm_smart.rb +74 -0
- data/lib/fog/arubacloud/requests/compute/delete_vm.rb +50 -0
- data/lib/fog/arubacloud/requests/compute/get_hypervisors.rb +49 -0
- data/lib/fog/arubacloud/requests/compute/get_purchased_ip_addresses.rb +79 -0
- data/lib/fog/arubacloud/requests/compute/get_server_details.rb +51 -0
- data/lib/fog/arubacloud/requests/compute/get_servers.rb +86 -0
- data/lib/fog/arubacloud/requests/compute/power_off_vm.rb +51 -0
- data/lib/fog/arubacloud/requests/compute/power_on_vm.rb +49 -0
- data/lib/fog/arubacloud/requests/compute/purchase_ip.rb +62 -0
- data/lib/fog/arubacloud/requests/compute/reinitialize_vm.rb +56 -0
- data/lib/fog/arubacloud/requests/compute/remove_ip.rb +53 -0
- data/lib/fog/arubacloud/service.rb +54 -0
- data/lib/fog/arubacloud/version.rb +12 -0
- data/spec/fog/arubacloud/config_spec.rb +0 -0
- data/spec/fog/compute/arubacloud/server_spec.rb +26 -0
- data/spec/fog/compute/arubacloud/servers_spec.rb +11 -0
- data/spec/fog/compute/arubacloud_spec.rb +32 -0
- data/spec/model_setup.rb +16 -0
- data/spec/spec_helper.rb +6 -0
- data/tests/test_helper.rb +8 -0
- metadata +217 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/core/collection'
|
9
|
+
require 'fog/arubacloud/models/compute/server'
|
10
|
+
|
11
|
+
|
12
|
+
module Fog
|
13
|
+
module Compute
|
14
|
+
class ArubaCloud
|
15
|
+
class Servers < Fog::Collection
|
16
|
+
model Fog::Compute::ArubaCloud::Server
|
17
|
+
|
18
|
+
# Returns list of servers
|
19
|
+
# @return [Fog::Compute::ArubaCloud::Servers] Retrieves a list servers.
|
20
|
+
# @raise [Fog::Compute::ArubaCloud::NotFound]
|
21
|
+
# @note The filter parameter on the method is just to maintain compatibility with other providers that support
|
22
|
+
# filtering.
|
23
|
+
def all(filters = [])
|
24
|
+
data = service.get_servers
|
25
|
+
objects = data['Value']
|
26
|
+
load(objects)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Retrieves server
|
30
|
+
# @param [String] server_id for server to be returned.
|
31
|
+
# @return [Fog::Compute::ArubaCloud::Server]
|
32
|
+
def get(server_id)
|
33
|
+
data = service.get_server_details(server_id)
|
34
|
+
objects = data['Value']
|
35
|
+
msg = "Fog::Compute::ArubaCloud::Servers.get 'objects' must be an hash, actually is: #{objects.class} #{objects.to_yaml}"
|
36
|
+
Fog::Logger.debug(msg)
|
37
|
+
raise Fog::ArubaCloud::Errors::BadObjectType.new("#{msg}") unless objects.instance_of? Hash
|
38
|
+
new(objects)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/core/model'
|
9
|
+
|
10
|
+
module Fog
|
11
|
+
module Compute
|
12
|
+
class ArubaCloud
|
13
|
+
|
14
|
+
class Template < Fog::Model
|
15
|
+
identity :id, :aliases => 'Id'
|
16
|
+
|
17
|
+
attribute :name, :aliases => 'Name'
|
18
|
+
attribute :description, :aliases => 'Description'
|
19
|
+
attribute :enabled, :aliases => 'Enabled'
|
20
|
+
attribute :export_enabled, :aliases => 'ExportEnabled'
|
21
|
+
attribute :identification_code, :aliases => 'IdentificationCode'
|
22
|
+
attribute :product_id, :aliases => 'ProductId'
|
23
|
+
attribute :hypervisor
|
24
|
+
|
25
|
+
ignore_attributes :ApplianceType, :ArchitectureType, :CompanyID, :CompatiblePreConfiguredPackages,
|
26
|
+
:FeatureTypes, :Icon, :OwnerUserId, :ParentTemplateID, :OSFamily, :OSVersion, :ResourceBounds,
|
27
|
+
:Revision, :TemplateExtendedDescription, :TemplateOwnershipType, :TemplatePassword,
|
28
|
+
:TemplateSellingStatus, :TemplateType, :TemplateUsername, :ToolsAvailable
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/core/collection'
|
9
|
+
require 'fog/arubacloud/models/compute/template'
|
10
|
+
|
11
|
+
|
12
|
+
module Fog
|
13
|
+
module Compute
|
14
|
+
class ArubaCloud
|
15
|
+
class Templates < Fog::Collection
|
16
|
+
model Fog::Compute::ArubaCloud::Template
|
17
|
+
|
18
|
+
# Returns list of Template
|
19
|
+
# @return [Fog::Compute::ArubaCloud::Template] Retrieves the complete Templates list.
|
20
|
+
# @raise [Fog::Compute::ArubaCloud::NotFound]
|
21
|
+
def all
|
22
|
+
data = service.get_hypervisors
|
23
|
+
objects = data['Value']
|
24
|
+
manipulated_objects = Array.new
|
25
|
+
objects.each do |h|
|
26
|
+
hv_type = h['HypervisorType']
|
27
|
+
h['Templates'].each do |t|
|
28
|
+
t.merge!({'hypervisor' => hv_type})
|
29
|
+
manipulated_objects << t
|
30
|
+
end
|
31
|
+
end
|
32
|
+
load(manipulated_objects)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Return only templates assigned to a specific service, default is smart (4)
|
36
|
+
# @param hv [Int] The ID of the hypervisor
|
37
|
+
# @return [Fog::Compute::ArubaCloud::Template] List of templates
|
38
|
+
# @raise [Fog::Compute::ArubaCloud::NotFound]
|
39
|
+
def get_hypervisor(hv=4)
|
40
|
+
manipulated_objects = Array.new
|
41
|
+
data = service.get_hypervisors
|
42
|
+
objects = data['Value']
|
43
|
+
objects.each do |h|
|
44
|
+
hv_type = h['HypervisorType']
|
45
|
+
h['Templates'].each do |t|
|
46
|
+
# select{|f| f['HypervisorType'].eql?(hv)}
|
47
|
+
t.merge!({'hypervisor' => hv_type})
|
48
|
+
if t['hypervisor'].eql?(4)
|
49
|
+
Fog::Logger.debug("Fog::Compute::ArubaCloud::Templates.get_hypervisors: t: #{h.to_yaml}")
|
50
|
+
manipulated_objects << t
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
load(manipulated_objects)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Retrieves Single Template Item
|
58
|
+
# @param [String] template_id for server to be returned.
|
59
|
+
# @return [Fog::Compute::ArubaCloud::Template]
|
60
|
+
def get(template_id)
|
61
|
+
# TODO: Implement retrieve of a single template
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/arubacloud/service'
|
9
|
+
require 'benchmark'
|
10
|
+
|
11
|
+
module Fog
|
12
|
+
module Compute
|
13
|
+
class ArubaCloud
|
14
|
+
class Real
|
15
|
+
# Create a new VM: Pro.
|
16
|
+
# @param [String] name name of the server
|
17
|
+
# @param [String] admin_password server administrative password
|
18
|
+
# @param [Int] cpu amount of vcpu
|
19
|
+
# @param [Int] ram amount of ram in GB
|
20
|
+
# @param [String] template_id id of template to use
|
21
|
+
# @param [String] ipv4_id if present, the ID of the ip resource to associate
|
22
|
+
# @param [String] note Metadata for VM
|
23
|
+
# @return [Excon::Response]
|
24
|
+
def create_vm_pro(data)
|
25
|
+
body = self.body('SetEnqueueServerCreation').merge(
|
26
|
+
{
|
27
|
+
:Server => {
|
28
|
+
:AdministratorPassword => data[:admin_passwd],
|
29
|
+
:CPUQuantity => data[:cpu],
|
30
|
+
:Name => data[:name],
|
31
|
+
:NetworkAdaptersConfiguration => [],
|
32
|
+
:Note => 'Created by Fog Cloud.',
|
33
|
+
:OSTemplateId => data[:template_id],
|
34
|
+
:RAMQuantity => data[:memory],
|
35
|
+
:VirtualDisks => []
|
36
|
+
}
|
37
|
+
}
|
38
|
+
)
|
39
|
+
unless data[:ipv4_id].nil?
|
40
|
+
body[:Server][:NetworkAdaptersConfiguration] << {
|
41
|
+
:NetworkAdapterType => 0,
|
42
|
+
:PublicIpAddresses => [{
|
43
|
+
:PrimaryIPAddress => 'true',
|
44
|
+
:PublicIpAddressResourceId => data[:ipv4_id]
|
45
|
+
}]
|
46
|
+
}
|
47
|
+
end
|
48
|
+
unless data[:disks].nil? && data[:disks].instance_of?(Array)
|
49
|
+
data[:disks].each { |d| body[:Server][:VirtualDisks] << d}
|
50
|
+
end
|
51
|
+
|
52
|
+
options = {
|
53
|
+
:http_method => :post,
|
54
|
+
:method => 'SetEnqueueServerCreation',
|
55
|
+
:body => Fog::JSON.encode(body)
|
56
|
+
}
|
57
|
+
|
58
|
+
response = nil
|
59
|
+
time = Benchmark.realtime {
|
60
|
+
response = request(options)
|
61
|
+
}
|
62
|
+
Fog::Logger.debug("SetEnqueueServerCreation time: #{time}")
|
63
|
+
if response['Success']
|
64
|
+
response
|
65
|
+
else
|
66
|
+
raise Fog::ArubaCloud::Errors::RequestError.new("Error during the VM creation. Object: \n#{body}\nError: \n#{response}")
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class Mock
|
73
|
+
def create_vm_pro(data)
|
74
|
+
response = Excon::Response.new
|
75
|
+
response.status = 201
|
76
|
+
response.body = {
|
77
|
+
'ExceptionInfo' => nil,
|
78
|
+
'ResultCode' => 0,
|
79
|
+
'ResultMessage' => nil,
|
80
|
+
'Success' => true
|
81
|
+
}
|
82
|
+
response.body
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end # ArubaCloud
|
87
|
+
end # Compute
|
88
|
+
end # Fog
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/arubacloud/service'
|
9
|
+
|
10
|
+
module Fog
|
11
|
+
module Compute
|
12
|
+
class ArubaCloud
|
13
|
+
class Real
|
14
|
+
# Create a new VM: Smart.
|
15
|
+
# @param [String] name name of the server
|
16
|
+
# @param [String] admin_password server administrative password
|
17
|
+
# @param [String] template_id id of template to use
|
18
|
+
# @param [Int] size
|
19
|
+
# * 1 => small
|
20
|
+
# * 2 => medium
|
21
|
+
# * 3 => large
|
22
|
+
# * 4 => extra-large
|
23
|
+
# @param [String] note Metadata for VM
|
24
|
+
# @return [Excon::Response]
|
25
|
+
def create_vm_smart(data)
|
26
|
+
body = self.body('SetEnqueueServerCreation').merge(
|
27
|
+
{
|
28
|
+
:Server => {
|
29
|
+
:AdministratorPassword => data[:admin_passwd],
|
30
|
+
:Name => data[:name],
|
31
|
+
:SmartVMWarePackageID => data[:size] || 1,
|
32
|
+
:Note => data[:note] || 'Created by Fog Cloud.',
|
33
|
+
:OSTemplateId => data[:template_id]
|
34
|
+
}
|
35
|
+
}
|
36
|
+
)
|
37
|
+
|
38
|
+
options = {
|
39
|
+
:http_method => :post,
|
40
|
+
:method => 'SetEnqueueServerCreation',
|
41
|
+
:body => Fog::JSON.encode(body),
|
42
|
+
}
|
43
|
+
|
44
|
+
response = nil
|
45
|
+
time = Benchmark.realtime {
|
46
|
+
response = request(options)
|
47
|
+
}
|
48
|
+
Fog::Logger.debug("SetEnqueueServerCreation time: #{time}")
|
49
|
+
if response['Success']
|
50
|
+
response
|
51
|
+
else
|
52
|
+
raise Fog::ArubaCloud::Errors::RequestError.new("Error during the VM creation. Object: \n#{body}",
|
53
|
+
response=response)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class Mock
|
59
|
+
def create_vm_smart(data)
|
60
|
+
response = Excon::Response.new
|
61
|
+
response.status = 201
|
62
|
+
response.body = {
|
63
|
+
'ExceptionInfo' => nil,
|
64
|
+
'ResultCode' => 0,
|
65
|
+
'ResultMessage' => nil,
|
66
|
+
'Success' => true
|
67
|
+
}
|
68
|
+
response.body
|
69
|
+
end # create_vm_smart
|
70
|
+
end # Mock
|
71
|
+
|
72
|
+
end # ArubaCloud
|
73
|
+
end # Compute
|
74
|
+
end # Fog
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
module Fog
|
9
|
+
module Compute
|
10
|
+
class ArubaCloud
|
11
|
+
|
12
|
+
class Real
|
13
|
+
def delete_vm(id)
|
14
|
+
body = self.body('SetEnqueueServerDeletion').merge({:ServerId => "#{id}"})
|
15
|
+
options = {
|
16
|
+
:http_method => :post,
|
17
|
+
:method => 'SetEnqueueServerDeletion',
|
18
|
+
:body => Fog::JSON.encode(body)
|
19
|
+
}
|
20
|
+
response = nil
|
21
|
+
time = Benchmark.realtime {
|
22
|
+
response = request(options)
|
23
|
+
}
|
24
|
+
Fog::Logger.debug("SetEnqueueServerDeletion time: #{time}")
|
25
|
+
if response['Success']
|
26
|
+
response
|
27
|
+
else
|
28
|
+
raise Fog::ArubaCloud::Errors::RequestError.new("Error Powering off the VM. Error: #{response}")
|
29
|
+
end
|
30
|
+
end # delete_vm
|
31
|
+
end # Real
|
32
|
+
|
33
|
+
class Mock
|
34
|
+
def delete_vm(id)
|
35
|
+
self.servers.select!{|s| s.id.eql?(id)}
|
36
|
+
response = Excon::Response.new
|
37
|
+
response.status = 200
|
38
|
+
response.body = {
|
39
|
+
'ExceptionInfo' => nil,
|
40
|
+
'ResultCode' => 0,
|
41
|
+
'ResultMessage' => nil,
|
42
|
+
'Success' => true
|
43
|
+
}
|
44
|
+
response.body
|
45
|
+
end # delete_vm
|
46
|
+
end # Mock
|
47
|
+
|
48
|
+
end # ArubaCloud
|
49
|
+
end # Compute
|
50
|
+
end # Fog
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/arubacloud/service'
|
9
|
+
require 'fog/arubacloud/error'
|
10
|
+
require 'benchmark'
|
11
|
+
|
12
|
+
module Fog
|
13
|
+
module Compute
|
14
|
+
class ArubaCloud
|
15
|
+
class Real
|
16
|
+
def get_hypervisors
|
17
|
+
body = self.body('GetHypervisors')
|
18
|
+
options = {
|
19
|
+
:http_method => :post,
|
20
|
+
:method => 'GetHypervisors',
|
21
|
+
:body => Fog::JSON.encode(body)
|
22
|
+
}
|
23
|
+
response = nil
|
24
|
+
time = Benchmark.realtime {
|
25
|
+
response = request(options)
|
26
|
+
}
|
27
|
+
Fog::Logger.debug("GetHypervisors time: #{time}")
|
28
|
+
if response['Success']
|
29
|
+
response
|
30
|
+
else
|
31
|
+
raise Fog::ArubaCloud::Errors::RequestError.new('Error in request.')
|
32
|
+
end
|
33
|
+
end # get_hypervisors
|
34
|
+
end # Real
|
35
|
+
|
36
|
+
class Mock
|
37
|
+
# Due to the length of the response body, I actually decided to not implement
|
38
|
+
# the mock method of the request. I will introduce it in the next version after structuring the mock
|
39
|
+
# objects in a more reasonable way.
|
40
|
+
def get_hypervisors
|
41
|
+
raise Fog::Errors::MockNotImplemented.new(
|
42
|
+
'Mock object for get_hypervisor not present, read code comments for details.'
|
43
|
+
)
|
44
|
+
end # get_hypervisors
|
45
|
+
end # Mock
|
46
|
+
|
47
|
+
end # ArubaCloud
|
48
|
+
end # Compute
|
49
|
+
end # Fog
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
|
3
|
+
# © Copyright ArubaCloud.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'fog/arubacloud/service'
|
9
|
+
require 'fog/arubacloud/error'
|
10
|
+
require 'benchmark'
|
11
|
+
|
12
|
+
module Fog
|
13
|
+
module Compute
|
14
|
+
class ArubaCloud
|
15
|
+
|
16
|
+
# noinspection RubyResolve
|
17
|
+
class Real
|
18
|
+
def get_purchased_ip_addresses
|
19
|
+
body = self.body('GetPurchasedIpAddresses')
|
20
|
+
get_servers_options = {
|
21
|
+
:http_method => :post,
|
22
|
+
:method => 'GetPurchasedIpAddresses',
|
23
|
+
:body => Fog::JSON.encode(body)
|
24
|
+
}
|
25
|
+
response = nil
|
26
|
+
time = Benchmark.realtime {
|
27
|
+
response = request(get_servers_options)
|
28
|
+
}
|
29
|
+
Fog::Logger.debug("GetPurchasedIpAddresses time: #{time}")
|
30
|
+
if response['Success']
|
31
|
+
response
|
32
|
+
else
|
33
|
+
raise Fog::ArubaCloud::Error::RequestError
|
34
|
+
end
|
35
|
+
end # get_purchased_ip_addresses
|
36
|
+
end # Real
|
37
|
+
|
38
|
+
class Mock
|
39
|
+
def get_purchased_ip_addresses
|
40
|
+
response = Excon::Response.new
|
41
|
+
response.status = 200
|
42
|
+
response.body = {
|
43
|
+
'ExceptionInfo' => nil,
|
44
|
+
'ResultCode' => 0,
|
45
|
+
'ResultMessage' => nil,
|
46
|
+
'Success' => true,
|
47
|
+
'Value' => [
|
48
|
+
{
|
49
|
+
'CompanyId' => 1,
|
50
|
+
'ProductId' => 20,
|
51
|
+
'ResourceId' => 96052,
|
52
|
+
'ResourceType' => 6,
|
53
|
+
'UserId' => 1856,
|
54
|
+
'Gateway' => '5.249.158.1',
|
55
|
+
'LoadBalancerID' => nil,
|
56
|
+
'ServerId' => nil,
|
57
|
+
'SubNetMask' => '255.255.255.0',
|
58
|
+
'Value' => '5.249.158.66'
|
59
|
+
}, {
|
60
|
+
'CompanyId' => 1,
|
61
|
+
'ProductId' => 20,
|
62
|
+
'ResourceId' => 96054,
|
63
|
+
'ResourceType' => 6,
|
64
|
+
'UserId' => 1856,
|
65
|
+
'Gateway' => '5.249.158.1',
|
66
|
+
'LoadBalancerID' => nil,
|
67
|
+
'ServerId' => nil,
|
68
|
+
'SubNetMask' => '255.255.255.0',
|
69
|
+
'Value' => '5.249.158.102'
|
70
|
+
}
|
71
|
+
]
|
72
|
+
}
|
73
|
+
response.body
|
74
|
+
end # get_purchased_ip_addresses
|
75
|
+
end # Mock
|
76
|
+
|
77
|
+
end # ArubaCloud
|
78
|
+
end # Compute
|
79
|
+
end # Fog
|