fog-arubacloud 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +26 -0
  3. data/.gitignore +15 -0
  4. data/.rubocop.yml +1168 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +18 -0
  7. data/CONTRIBUTING.md +28 -0
  8. data/CONTRIBUTORS.md +2 -0
  9. data/Gemfile +6 -0
  10. data/LICENSE.md +20 -0
  11. data/README.md +36 -0
  12. data/Rakefile +24 -0
  13. data/fog-arubacloud.gemspec +31 -0
  14. data/gemfiles/fog-arubacloud-0.0.1.gem +0 -0
  15. data/gemfiles/fog-arubacloud-0.0.2.gem +0 -0
  16. data/lib/fog/arubacloud.rb +31 -0
  17. data/lib/fog/arubacloud/compute.rb +96 -0
  18. data/lib/fog/arubacloud/error.rb +84 -0
  19. data/lib/fog/arubacloud/examples/create_pro_server.rb +53 -0
  20. data/lib/fog/arubacloud/examples/create_smart_server.rb +39 -0
  21. data/lib/fog/arubacloud/examples/get_objects.rb +44 -0
  22. data/lib/fog/arubacloud/examples/get_servers.rb +31 -0
  23. data/lib/fog/arubacloud/examples/vm_operations.rb +60 -0
  24. data/lib/fog/arubacloud/models/compute/disk.rb +47 -0
  25. data/lib/fog/arubacloud/models/compute/disks.rb +31 -0
  26. data/lib/fog/arubacloud/models/compute/ip.rb +45 -0
  27. data/lib/fog/arubacloud/models/compute/ips.rb +50 -0
  28. data/lib/fog/arubacloud/models/compute/network_adapter.rb +26 -0
  29. data/lib/fog/arubacloud/models/compute/network_adapters.rb +20 -0
  30. data/lib/fog/arubacloud/models/compute/server.rb +185 -0
  31. data/lib/fog/arubacloud/models/compute/servers.rb +43 -0
  32. data/lib/fog/arubacloud/models/compute/template.rb +33 -0
  33. data/lib/fog/arubacloud/models/compute/templates.rb +67 -0
  34. data/lib/fog/arubacloud/requests/compute/create_vm_pro.rb +88 -0
  35. data/lib/fog/arubacloud/requests/compute/create_vm_smart.rb +74 -0
  36. data/lib/fog/arubacloud/requests/compute/delete_vm.rb +50 -0
  37. data/lib/fog/arubacloud/requests/compute/get_hypervisors.rb +49 -0
  38. data/lib/fog/arubacloud/requests/compute/get_purchased_ip_addresses.rb +79 -0
  39. data/lib/fog/arubacloud/requests/compute/get_server_details.rb +51 -0
  40. data/lib/fog/arubacloud/requests/compute/get_servers.rb +86 -0
  41. data/lib/fog/arubacloud/requests/compute/power_off_vm.rb +51 -0
  42. data/lib/fog/arubacloud/requests/compute/power_on_vm.rb +49 -0
  43. data/lib/fog/arubacloud/requests/compute/purchase_ip.rb +62 -0
  44. data/lib/fog/arubacloud/requests/compute/reinitialize_vm.rb +56 -0
  45. data/lib/fog/arubacloud/requests/compute/remove_ip.rb +53 -0
  46. data/lib/fog/arubacloud/service.rb +54 -0
  47. data/lib/fog/arubacloud/version.rb +12 -0
  48. data/spec/fog/arubacloud/config_spec.rb +0 -0
  49. data/spec/fog/compute/arubacloud/server_spec.rb +26 -0
  50. data/spec/fog/compute/arubacloud/servers_spec.rb +11 -0
  51. data/spec/fog/compute/arubacloud_spec.rb +32 -0
  52. data/spec/model_setup.rb +16 -0
  53. data/spec/spec_helper.rb +6 -0
  54. data/tests/test_helper.rb +8 -0
  55. metadata +217 -0
@@ -0,0 +1,51 @@
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
+ class Real
17
+ # Return the server details
18
+ # @return [Excon::Response]
19
+ def get_server_details(server_id)
20
+ body = self.body('GetServerDetails').merge({:ServerId => server_id})
21
+ options = {
22
+ :http_method => :post,
23
+ :method => 'GetServerDetails',
24
+ :body => Fog::JSON.encode(body)
25
+ }
26
+ response = nil
27
+ time = Benchmark.realtime {
28
+ response = request(options)
29
+ }
30
+ Fog::Logger.debug("GetServerDetails time: #{time}")
31
+ if response['Success']
32
+ response
33
+ else
34
+ raise Fog::ArubaCloud::Errors::RequestError.new(
35
+ "Error during GetServerDetails request. Error message: \n#{response}"
36
+ )
37
+ end
38
+ end # get_server_details
39
+ end # Real
40
+
41
+ class Mock
42
+ def get_server_details(server_id)
43
+ raise Fog::Errors::MockNotImplemented.new(
44
+ 'Mock not implemented. Feel free to contribute.'
45
+ )
46
+ end # get_server_details
47
+ end # Mock
48
+
49
+ end # ArubaCloud
50
+ end # Compute
51
+ end # Fog
@@ -0,0 +1,86 @@
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
+ class Real
17
+ def get_servers
18
+ body = self.body('GetServers')
19
+ options = {
20
+ :http_method => :post,
21
+ :method => 'GetServers',
22
+ :body => Fog::JSON.encode(body)
23
+ }
24
+ response = nil
25
+ time = Benchmark.realtime {
26
+ response = request(options)
27
+ }
28
+ Fog::Logger.debug("GetServer time: #{time}")
29
+ if response['Success']
30
+ response
31
+ else
32
+ raise Fog::ArubaCloud::Errors::RequestError.new(response)
33
+ end
34
+ end # get_servers
35
+ end # Real
36
+
37
+ class Mock
38
+ def get_servers
39
+ response = Excon::Response.new
40
+ response.status = 200
41
+ response.body = {
42
+ 'ExceptionInfo' => nil,
43
+ 'ResultCode' => 0,
44
+ 'ResultMessage' => nil,
45
+ 'Success' => true,
46
+ 'Value' => [
47
+ {
48
+ 'Busy' => false,
49
+ 'CPUQuantity' => 1,
50
+ 'CompanyId' => 1,
51
+ 'DatacenterId' => 2,
52
+ 'HDQuantity' => 1,
53
+ 'HDTotalSize' => 20,
54
+ 'HypervisorServerType' => 2,
55
+ 'HypervisorType' => 4,
56
+ 'Name' => 'testfog1',
57
+ 'OSTemplateId' => 415,
58
+ 'RAMQuantity' => 1,
59
+ 'ServerId' => 16763,
60
+ 'ServerStatus' => 3,
61
+ 'UserId' => 1856
62
+ }, {
63
+ 'Busy' => false,
64
+ 'CPUQuantity' => 1,
65
+ 'CompanyId' => 1,
66
+ 'DatacenterId' => 2,
67
+ 'HDQuantity' => 2,
68
+ 'HDTotalSize' => 50,
69
+ 'HypervisorServerType' => 2,
70
+ 'HypervisorType' => 2,
71
+ 'Name' => 'testpro4504',
72
+ 'OSTemplateId' => 60,
73
+ 'RAMQuantity' => 1,
74
+ 'ServerId' => 16779,
75
+ 'ServerStatus' => 3,
76
+ 'UserId' => 1856
77
+ }
78
+ ]
79
+ }
80
+ response.body
81
+ end # get_servers
82
+ end # Mock
83
+
84
+ end # ArubaCloud
85
+ end # Compute
86
+ end # Fog
@@ -0,0 +1,51 @@
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
+
11
+ module Fog
12
+ module Compute
13
+ class ArubaCloud
14
+
15
+ class Real
16
+ def power_off_vm(id)
17
+ body = self.body('SetEnqueueServerStop').merge({:ServerId => "#{id}"})
18
+ options = {
19
+ :http_method => :post,
20
+ :method => 'SetEnqueueServerStop',
21
+ :body => Fog::JSON.encode(body)
22
+ }
23
+ response = nil
24
+ time = Benchmark.realtime {
25
+ response = request(options)
26
+ }
27
+ Fog::Logger.debug("SetEnqueueServerStop time: #{time}")
28
+ if response['Success']
29
+ response
30
+ else
31
+ raise Fog::ArubaCloud::Errors::RequestError.new("Error Powering off the VM. Error: #{response}")
32
+ end
33
+ end # power_off_vm
34
+ end # Real
35
+
36
+ class Mock
37
+ def power_off_vm(id)
38
+ response = Excon::Response.new
39
+ response.status = 200
40
+ response.body = {
41
+ 'ExceptionInfo' => nil,
42
+ 'ResultCode' => 0,
43
+ 'ResultMessage' => nil,
44
+ 'Success' => true
45
+ }
46
+ response.body
47
+ end
48
+ end # Mock
49
+ end # ArubaCloud
50
+ end # Compute
51
+ 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
+
10
+ module Fog
11
+ module Compute
12
+ class ArubaCloud
13
+ class Real
14
+ def power_on_vm(id)
15
+ body = self.body('SetEnqueueServerStart').merge({:ServerId => "#{id}"})
16
+ options = {
17
+ :http_method => :post,
18
+ :method => 'SetEnqueueServerStart',
19
+ :body => Fog::JSON.encode(body)
20
+ }
21
+ response = nil
22
+ time = Benchmark.realtime {
23
+ response = request(options)
24
+ }
25
+ Fog::Logger.debug("SetEnqueueServerStart time: #{time}")
26
+ if response['Success']
27
+ response
28
+ else
29
+ raise Fog::ArubaCloud::Error::RequestError
30
+ end
31
+ end # power_on_vm
32
+ end # Real
33
+
34
+ class Mock
35
+ def power_on_vm(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 # power_on_vm
46
+ end # Mock
47
+ end # ArubaCloud
48
+ end # Compute
49
+ end # Fog
@@ -0,0 +1,62 @@
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
+ def purchase_ip
15
+ body = self.body('SetPurchaseIpAddress')
16
+ options = {
17
+ :http_method => :post,
18
+ :method => 'SetPurchaseIpAddress',
19
+ :body => Fog::JSON.encode(body)
20
+ }
21
+ response = nil
22
+ time = Benchmark.realtime {
23
+ response = request(options)
24
+ }
25
+ Fog::Logger.debug("SetPurchaseIpAddress time: #{time}")
26
+ if response['Success']
27
+ response
28
+ else
29
+ raise Fog::ArubaCloud::Errors::RequestError.new("Error purchasing new ip. Error: \n#{response}")
30
+ end
31
+ end # purchase_ip
32
+ end # Real
33
+
34
+ class Mock
35
+ def purchase_ip
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
+ 'Value' => {
44
+ 'CompanyId' => 1,
45
+ 'ProductId' => 20,
46
+ 'ResourceId' => 96034,
47
+ 'ResourceType' => 6,
48
+ 'UserId' => 1856,
49
+ 'Gateway' => '5.249.158.1',
50
+ 'LoadBalancerID' => nil,
51
+ 'ServerId' => nil,
52
+ 'SubNetMask' => '255.255.255.0',
53
+ 'Value' => '5.249.158.23'
54
+ }
55
+ }
56
+ response.body
57
+ end # purchase_ip
58
+ end # Mock
59
+
60
+ end # ArubaCloud
61
+ end # Compute
62
+ end # Fog
@@ -0,0 +1,56 @@
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
+ # Reinitialize a Smart VM
16
+ # @param id [String] the id of the virtual machine to reinitialize
17
+ # @return response [Excon::Response]
18
+ def reinitialize_vm(id)
19
+ body = self.body('SetEnqueueReinitializeServer').merge({
20
+ :ServerId => id
21
+ })
22
+ options = {
23
+ :http_method => :post,
24
+ :method => 'GetServers',
25
+ :body => Fog::JSON.encode(body)
26
+ }
27
+ response = nil
28
+ time = Benchmark.realtime {
29
+ response = request(options)
30
+ }
31
+ Fog::Logger.debug("SetEnqueueReinitializeServer time: #{time}")
32
+ if response['Success']
33
+ response
34
+ else
35
+ raise Fog::ArubaCloud::Errors::RequestError
36
+ end
37
+ end # reinitialize_vm
38
+ end # Real
39
+
40
+ class Mock
41
+ def reinitialize_vm(id)
42
+ response = Excon::Response.new
43
+ response.status = 200
44
+ response.body = {
45
+ 'ExceptionInfo' => nil,
46
+ 'ResultCode' => 0,
47
+ 'ResultMessage' => nil,
48
+ 'Success' => true
49
+ }
50
+ response.body
51
+ end # reinitialize_vm
52
+ end # Mock
53
+
54
+ end # ArubaCloud
55
+ end # Compute
56
+ end # Fog
@@ -0,0 +1,53 @@
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
+ def remove_ip(id)
15
+ body = self.body('SetRemoveIpAddress').merge(
16
+ {:IpAddressResourceId => id}
17
+ )
18
+ options = {
19
+ :http_method => :post,
20
+ :method => 'SetRemoveIpAddress',
21
+ :body => Fog::JSON.encode(body)
22
+ }
23
+ response = nil
24
+ time = Benchmark.realtime {
25
+ response = request(options)
26
+ }
27
+ Fog::Logger.debug("SetRemoveIpAddress time: #{time}")
28
+ if response['Success']
29
+ response
30
+ else
31
+ raise Fog::ArubaCloud::Error::RequestError
32
+ end
33
+ end # remove_ip
34
+ end # Real
35
+
36
+ class Mock
37
+ def remove_ip(id)
38
+ self.ips.select!{|i| !i.id.eql?(id)}
39
+ response = Excon::Response.new
40
+ response.status = 200
41
+ response.body = {
42
+ 'ExceptionInfo' => nil,
43
+ 'ResultCode' => 0,
44
+ 'ResultMessage' => nil,
45
+ 'Success' => true
46
+ }
47
+ response.body
48
+ end # remove_ip
49
+ end # Mock
50
+
51
+ end # ArubaCloud
52
+ end # Compute
53
+ end # Fog
@@ -0,0 +1,54 @@
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 ArubaCloud
10
+ class Service
11
+ def datacenter
12
+ raise Fog::Errors::NotImplemented.new('Please implement the #datacenter method')
13
+ end
14
+
15
+ def ws_enduser_url(url=nil)
16
+ @ws_enduser_url = url || Fog::ArubaCloud::DEFAULT_WS_ENDUSER_URL
17
+ end
18
+
19
+ def request(options)
20
+ http_method = options[:http_method] || :get
21
+ @request_url = "#{@ws_enduser_url}/#{options[:method]}"
22
+
23
+ params = {headers: headers}
24
+ params[:expects] = options[:expected] || [200, 201]
25
+ unless options[:body].nil?
26
+ params[:body] = options[:body]
27
+ end
28
+ params[:read_timeout] = 360
29
+
30
+ # initialize connection object
31
+ @connection = Fog::Core::Connection.new(@request_url, false, params)
32
+
33
+ # send request
34
+ begin
35
+ response = @connection.request(:method => http_method)
36
+ rescue Excon::Errors::Timeout
37
+ # raise an error
38
+ raise Fog::ArubaCloud::Errors::RequestTimeOut.new("Request timed out after: #{60 unless params[:read_timeout]}")
39
+ end
40
+
41
+ # decode the response and return it
42
+ Fog::JSON.decode(response.body)
43
+ end
44
+
45
+ def headers(options={})
46
+ {'Content-Type' => 'application/json'}.merge(options[:headers] || {})
47
+ end
48
+
49
+ def login
50
+
51
+ end
52
+ end
53
+ end
54
+ end