fog-arubacloud 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +0 -0
  3. data/.gitignore +0 -0
  4. data/.rubocop.yml +0 -0
  5. data/.ruby-version +0 -0
  6. data/.travis.yml +0 -0
  7. data/CONTRIBUTING.md +0 -0
  8. data/CONTRIBUTORS.md +0 -0
  9. data/Gemfile +0 -0
  10. data/LICENSE.md +0 -0
  11. data/README.md +3 -3
  12. data/Rakefile +99 -5
  13. data/{lib/fog/arubacloud/examples → examples}/create_pro_server.rb +3 -3
  14. data/{lib/fog/arubacloud/examples → examples}/create_smart_server.rb +0 -0
  15. data/{lib/fog/arubacloud/examples → examples}/get_objects.rb +1 -1
  16. data/{lib/fog/arubacloud/examples → examples}/get_servers.rb +0 -0
  17. data/{lib/fog/arubacloud/examples → examples}/vm_operations.rb +1 -1
  18. data/fog-arubacloud.gemspec +12 -12
  19. data/gemfiles/fog-arubacloud-0.0.4.gem +0 -0
  20. data/lib/fog/arubacloud/compute/models/custom_template.rb +60 -0
  21. data/lib/fog/arubacloud/compute/models/custom_templates.rb +19 -0
  22. data/lib/fog/arubacloud/{models/compute → compute/models}/disk.rb +6 -5
  23. data/lib/fog/arubacloud/{models/compute → compute/models}/disks.rb +7 -7
  24. data/lib/fog/arubacloud/{models/compute → compute/models}/ip.rb +6 -5
  25. data/lib/fog/arubacloud/{models/compute → compute/models}/ips.rb +6 -6
  26. data/lib/fog/arubacloud/compute/models/loadbalancer.rb +135 -0
  27. data/lib/fog/arubacloud/compute/models/loadbalancers.rb +21 -0
  28. data/lib/fog/arubacloud/{models/compute → compute/models}/network_adapter.rb +2 -2
  29. data/lib/fog/arubacloud/{models/compute → compute/models}/network_adapters.rb +4 -4
  30. data/lib/fog/arubacloud/compute/models/schedule.rb +90 -0
  31. data/lib/fog/arubacloud/compute/models/schedules.rb +19 -0
  32. data/lib/fog/arubacloud/{models/compute → compute/models}/server.rb +74 -35
  33. data/lib/fog/arubacloud/{models/compute → compute/models}/servers.rb +10 -9
  34. data/lib/fog/arubacloud/compute/models/sharedstorage.rb +58 -0
  35. data/lib/fog/arubacloud/compute/models/sharedstorages.rb +19 -0
  36. data/lib/fog/arubacloud/compute/models/snapshot.rb +58 -0
  37. data/lib/fog/arubacloud/compute/models/snapshots.rb +19 -0
  38. data/lib/fog/arubacloud/{models/compute → compute/models}/template.rb +2 -2
  39. data/lib/fog/arubacloud/{models/compute → compute/models}/templates.rb +10 -10
  40. data/lib/fog/arubacloud/compute/requests/add_contact.rb +59 -0
  41. data/lib/fog/arubacloud/compute/requests/add_instance.rb +56 -0
  42. data/lib/fog/arubacloud/compute/requests/add_lb_rule.rb +58 -0
  43. data/lib/fog/arubacloud/compute/requests/apply_snapshot.rb +53 -0
  44. data/lib/fog/arubacloud/compute/requests/archive_vm.rb +59 -0
  45. data/lib/fog/arubacloud/compute/requests/create_loadbalancer.rb +76 -0
  46. data/lib/fog/arubacloud/compute/requests/create_scheduled_occurrence.rb +71 -0
  47. data/lib/fog/arubacloud/compute/requests/create_scheduled_operation.rb +56 -0
  48. data/lib/fog/arubacloud/compute/requests/create_shared_storage.rb +55 -0
  49. data/lib/fog/arubacloud/compute/requests/create_snapshot.rb +54 -0
  50. data/lib/fog/arubacloud/{requests/compute → compute/requests}/create_vm_pro.rb +9 -14
  51. data/lib/fog/arubacloud/{requests/compute → compute/requests}/create_vm_smart.rb +11 -15
  52. data/lib/fog/arubacloud/compute/requests/delete_custom_template.rb +43 -0
  53. data/lib/fog/arubacloud/compute/requests/delete_scheduled_operation.rb +43 -0
  54. data/lib/fog/arubacloud/compute/requests/delete_shared_storage.rb +49 -0
  55. data/lib/fog/arubacloud/compute/requests/delete_snapshot.rb +60 -0
  56. data/lib/fog/arubacloud/{requests/compute → compute/requests}/delete_vm.rb +13 -13
  57. data/lib/fog/arubacloud/compute/requests/disable_loadbalancer.rb +47 -0
  58. data/lib/fog/arubacloud/compute/requests/edit_shared_storage.rb +50 -0
  59. data/lib/fog/arubacloud/compute/requests/enable_loadbalancer.rb +47 -0
  60. data/lib/fog/arubacloud/compute/requests/get_custom_templates.rb +43 -0
  61. data/lib/fog/arubacloud/{requests/compute → compute/requests}/get_hypervisors.rb +8 -11
  62. data/lib/fog/arubacloud/compute/requests/get_lb_loads.rb +49 -0
  63. data/lib/fog/arubacloud/compute/requests/get_lb_stats.rb +49 -0
  64. data/lib/fog/arubacloud/compute/requests/get_loadbalancer.rb +47 -0
  65. data/lib/fog/arubacloud/compute/requests/get_notifications.rb +50 -0
  66. data/lib/fog/arubacloud/compute/requests/get_package_id.rb +60 -0
  67. data/lib/fog/arubacloud/{requests/compute → compute/requests}/get_purchased_ip_addresses.rb +7 -11
  68. data/lib/fog/arubacloud/compute/requests/get_scheduled_operations.rb +42 -0
  69. data/lib/fog/arubacloud/{requests/compute → compute/requests}/get_server_details.rb +7 -13
  70. data/lib/fog/arubacloud/{requests/compute → compute/requests}/get_servers.rb +11 -14
  71. data/lib/fog/arubacloud/compute/requests/get_shared_storage.rb +43 -0
  72. data/lib/fog/arubacloud/compute/requests/manage_custom_template.rb +72 -0
  73. data/lib/fog/arubacloud/compute/requests/modify_loadbalancer.rb +49 -0
  74. data/lib/fog/arubacloud/{requests/compute → compute/requests}/power_off_vm.rb +8 -11
  75. data/lib/fog/arubacloud/{requests/compute → compute/requests}/power_on_vm.rb +8 -11
  76. data/lib/fog/arubacloud/{requests/compute → compute/requests}/purchase_ip.rb +7 -11
  77. data/lib/fog/arubacloud/{requests/compute → compute/requests}/reinitialize_vm.rb +8 -14
  78. data/lib/fog/arubacloud/compute/requests/remove_contact.rb +48 -0
  79. data/lib/fog/arubacloud/compute/requests/remove_instance.rb +56 -0
  80. data/lib/fog/arubacloud/{requests/compute → compute/requests}/remove_ip.rb +7 -11
  81. data/lib/fog/arubacloud/compute/requests/remove_loadbalancer.rb +47 -0
  82. data/lib/fog/arubacloud/compute/requests/rename_shared_storage.rb +50 -0
  83. data/lib/fog/arubacloud/compute/requests/restore_vm.rb +61 -0
  84. data/lib/fog/arubacloud/compute/requests/suspend_scheduled_operations.rb +43 -0
  85. data/lib/fog/arubacloud/compute.rb +106 -22
  86. data/lib/fog/arubacloud/error.rb +4 -0
  87. data/lib/fog/arubacloud/service.rb +4 -2
  88. data/lib/fog/arubacloud/version.rb +3 -2
  89. data/lib/fog/arubacloud.rb +4 -12
  90. data/spec/fog/arubacloud/config_spec.rb +0 -0
  91. data/spec/fog/compute/arubacloud/models/disk_spec.rb +63 -0
  92. data/spec/fog/compute/arubacloud/models/disks_spec.rb +11 -0
  93. data/spec/fog/compute/arubacloud/models/ip_spec.rb +53 -0
  94. data/spec/fog/compute/arubacloud/models/ips_spec.rb +11 -0
  95. data/spec/fog/compute/arubacloud/models/loadbalancer_spec.rb +100 -0
  96. data/spec/fog/compute/arubacloud/models/loadbalancers_spec.rb +15 -0
  97. data/spec/fog/compute/arubacloud/models/network_adapter_spec.rb +33 -0
  98. data/spec/fog/compute/arubacloud/models/network_adapters_spec.rb +11 -0
  99. data/spec/fog/compute/arubacloud/models/schedule_spec.rb +102 -0
  100. data/spec/fog/compute/arubacloud/models/schedules_spec.rb +11 -0
  101. data/spec/fog/compute/arubacloud/models/server_spec.rb +155 -0
  102. data/spec/fog/compute/arubacloud/models/servers_spec.rb +15 -0
  103. data/spec/fog/compute/arubacloud/models/sharedstorage_spec.rb +86 -0
  104. data/spec/fog/compute/arubacloud/models/sharedstorages_spec.rb +10 -0
  105. data/spec/fog/compute/arubacloud/models/snapshot_spec.rb +17 -0
  106. data/spec/fog/compute/arubacloud/models/snapshots_spec.rb +11 -0
  107. data/spec/fog/compute/arubacloud/models/template_spec.rb +39 -0
  108. data/spec/fog/compute/arubacloud/models/templates_spec.rb +21 -0
  109. data/spec/fog/compute/arubacloud_spec.rb +21 -4
  110. data/spec/model_setup.rb +3 -1
  111. data/spec/spec_helper.rb +1 -1
  112. metadata +121 -48
  113. data/gemfiles/fog-arubacloud-0.0.1.gem +0 -0
  114. data/gemfiles/fog-arubacloud-0.0.2.gem +0 -0
  115. data/spec/fog/compute/arubacloud/server_spec.rb +0 -26
  116. data/spec/fog/compute/arubacloud/servers_spec.rb +0 -11
  117. data/tests/test_helper.rb +0 -8
@@ -0,0 +1,47 @@
1
+ # coding: utf-8
2
+ #
3
+ # Author:: Dangleterre Michaël
4
+ # © Copyright ArubaCloud.
5
+ #
6
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
7
+ #
8
+
9
+ require 'fog/arubacloud/service'
10
+ require 'fog/arubacloud/error'
11
+ require 'benchmark'
12
+
13
+
14
+ module Fog
15
+ module ArubaCloud
16
+ class Compute
17
+ class Real
18
+ def remove_loadbalancer(data)
19
+ body = self.body('SetEnqueueLoadBalancerDeletion').merge(
20
+ :LoadBalancerDeletionRequest => {
21
+ :loadBalancerID => data[:id]
22
+ }
23
+ )
24
+ response = nil
25
+ time = Benchmark.realtime {
26
+ response = request(body, 'SetEnqueueLoadBalancerDeletion', 'SetEnqueueLoadBalancerDeletion Error')
27
+ }
28
+ Fog::Logger.debug("SetEnqueueLoadBalancerDeletion time: #{time}")
29
+ if response['Success']
30
+ response
31
+ else
32
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error during the Load Balancer deletion.')
33
+ end
34
+ end # remove_loadbalancer
35
+
36
+ class Mock
37
+ def remove_loadbalancer
38
+ raise Fog::Errors::MockNotImplemented.new(
39
+ 'Mock not implemented. Feel free to contribute.'
40
+ )
41
+ end # remove_loadbalancer
42
+ end # Mock
43
+ end # Real
44
+
45
+ end # Compute
46
+ end # ArubaCloud
47
+ end # Fog
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ #
3
+ # Author:: Dangleterre Michaël
4
+ # © Copyright ArubaCloud.
5
+ #
6
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
7
+ #
8
+
9
+ require 'fog/arubacloud/service'
10
+ require 'fog/arubacloud/error'
11
+ require 'benchmark'
12
+
13
+
14
+ module Fog
15
+ module ArubaCloud
16
+ class Compute
17
+ class Real
18
+ def rename_shared_storage(data)
19
+ body = self.body('SetRenameSharedStorage').merge(
20
+ {
21
+ :SharedStorage => {
22
+ :SharedStorageId => data[:id],
23
+ :SharedStorageName => data[:sharedstoragename]
24
+ }
25
+ }
26
+ )
27
+ response = nil
28
+ time = Benchmark.realtime {
29
+ response = request(body, 'SetRenameSharedStorage', 'SetRenameSharedStorage Error')
30
+ }
31
+ Fog::Logger.debug("SetRenameSharedStorage time: #{time}")
32
+ if response['Success']
33
+ response
34
+ else
35
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error in request.')
36
+ end
37
+ end # rename_shared_storage
38
+
39
+ class Mock
40
+ def rename_shared_storage
41
+ raise Fog::Errors::MockNotImplemented.new(
42
+ 'Mock not implemented. Feel free to contribute.'
43
+ )
44
+ end # rename_shared_storage
45
+ end # Mock
46
+ end # Real
47
+
48
+ end # Compute
49
+ end # ArubaCloud
50
+ end # Fog
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+ #
3
+ # Author:: Dangleterre Michaël
4
+ # © Copyright ArubaCloud.
5
+ #
6
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
7
+ #
8
+
9
+ require 'fog/arubacloud/service'
10
+ require 'fog/arubacloud/error'
11
+ require 'benchmark'
12
+
13
+
14
+ module Fog
15
+ module ArubaCloud
16
+ class Compute
17
+ class Real
18
+ def restore_vm(data)
19
+ (service.servers).all.each do |server|
20
+ id = server.id if (server.name).include? data[:name] and (server.vm_type).include? 'pro'
21
+ end
22
+ body = self.body('SetEnqueueServerRestore').merge(
23
+ {
24
+ :ServerRestore => {
25
+ :ServerId => id,
26
+ :CPUQuantity => cpu,
27
+ :RAMQuantity => memory
28
+ }
29
+ }
30
+ )
31
+ response = nil
32
+ time = Benchmark.realtime {
33
+ response = request(body, 'SetEnqueueServerRestore', 'SetEnqueueServerRestore Error')
34
+ }
35
+ Fog::Logger.debug("SetEnqueueServerRestore time: #{time}")
36
+ if response['Success']
37
+ response
38
+ else
39
+ raise Fog::ArubaCloud::Errors::RequestError.new(response)
40
+ end
41
+
42
+ end # restore_vm
43
+ end # Real
44
+
45
+ class Mock
46
+ def restore_vm
47
+ response = Excon::Response.new
48
+ response.status = 200
49
+ response.body = {
50
+ 'ExceptionInfo' => nil,
51
+ 'ResultCode' => 0,
52
+ 'ResultMessage' => nil,
53
+ 'Success' => true
54
+ }
55
+ response.body
56
+ end # restore_vm
57
+ end # Mock
58
+
59
+ end # Compute
60
+ end # ArubaCloud
61
+ end # Fog
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ #
3
+ # Author:: Dangleterre Michaël
4
+ # © Copyright ArubaCloud.
5
+ #
6
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
7
+ #
8
+
9
+ require 'fog/arubacloud/service'
10
+ require 'fog/arubacloud/error'
11
+ require 'benchmark'
12
+
13
+
14
+ module Fog
15
+ module ArubaCloud
16
+ class Compute
17
+ class Real
18
+ def suspend_scheduled_operations(operationid)
19
+ body = self.body('SetUpdateServerScheduledOperation').merge({:operationid => operationid})
20
+ response = nil
21
+ time = Benchmark.realtime {
22
+ response = request(body , 'SetUpdateServerScheduledOperation', 'SetUpdateServerScheduledOperation Error')
23
+ }
24
+ Fog::Logger.debug("SetUpdateServerScheduledOperation time: #{time}")
25
+ if response['Success']
26
+ response
27
+ else
28
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error in request.')
29
+ end
30
+ end # suspend_scheduled_operations
31
+
32
+ class Mock
33
+ def get_scheduled_operations
34
+ raise Fog::Errors::MockNotImplemented.new(
35
+ 'Mock not implemented. Feel free to contribute.'
36
+ )
37
+ end # get_scheduled_operations
38
+ end # Mock
39
+ end # Real
40
+
41
+ end # Compute
42
+ end # ArubaCloud
43
+ end # Fog
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  #
2
3
  # Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
3
4
  # © Copyright ArubaCloud.
@@ -6,10 +7,11 @@
6
7
  #
7
8
 
8
9
  require 'fog/arubacloud/service'
10
+ require 'benchmark'
9
11
 
10
12
  module Fog
11
- module Compute
12
- class ArubaCloud < Fog::Service
13
+ module ArubaCloud
14
+ class Compute < Fog::Service
13
15
 
14
16
  # Define global constant to enumerate service type (We will need them in Vagrant :P)
15
17
  PRO_HV = 1
@@ -21,7 +23,7 @@ module Fog
21
23
  requires :arubacloud_username, :arubacloud_password
22
24
 
23
25
  # Models
24
- model_path 'fog/arubacloud/models/compute'
26
+ model_path 'fog/arubacloud/compute/models'
25
27
  collection :servers
26
28
  model :server
27
29
  collection :ips
@@ -32,9 +34,19 @@ module Fog
32
34
  model :disk
33
35
  collection :network_adapters
34
36
  model :network_adapter
37
+ collection :snapshots
38
+ model :snapshot
39
+ collection :schedules
40
+ model :schedule
41
+ collection :loadbalancers
42
+ model :loadbalancer
43
+ collection :custom_templates
44
+ model :custom_template
45
+ collection :sharedstorages
46
+ model :sharedstorage
35
47
 
36
48
  # Requests
37
- request_path 'fog/arubacloud/requests/compute'
49
+ request_path 'fog/arubacloud/compute/requests'
38
50
  request :power_on_vm
39
51
  request :power_off_vm
40
52
  request :get_servers
@@ -47,9 +59,41 @@ module Fog
47
59
  request :get_purchased_ip_addresses
48
60
  request :get_hypervisors
49
61
  request :reinitialize_vm
62
+ request :create_snapshot
63
+ request :apply_snapshot
64
+ request :delete_snapshot
65
+ request :archive_vm
66
+ request :restore_vm
67
+ request :get_scheduled_operations
68
+ request :suspend_scheduled_operations
69
+ request :delete_scheduled_operation
70
+ request :create_scheduled_operation
71
+ request :create_scheduled_occurrence
72
+ request :create_loadbalancer
73
+ request :remove_loadbalancer
74
+ request :get_loadbalancer
75
+ request :modify_loadbalancer
76
+ request :enable_loadbalancer
77
+ request :disable_loadbalancer
78
+ request :get_lb_stats
79
+ request :get_lb_loads
80
+ request :add_lb_rule
81
+ request :remove_instance
82
+ request :add_instance
83
+ request :get_notifications
84
+ request :add_contact
85
+ request :remove_contact
86
+ request :manage_custom_template
87
+ request :delete_custom_template
88
+ request :get_custom_templates
89
+ request :get_shared_storage
90
+ request :create_shared_storage
91
+ request :edit_shared_storage
92
+ request :delete_shared_storage
93
+ request :rename_shared_storage
94
+ request :get_package_id
50
95
 
51
- # Mock class to run a fake instance of the Service with no real connections.
52
- class Mock < Fog::ArubaCloud::Service
96
+ class BaseObject < Fog::ArubaCloud::Service
53
97
  def initialize(options={})
54
98
  @arubacloud_username = options[:arubacloud_username] || ''
55
99
  @arubacloud_password = options[:arubacloud_password] || ''
@@ -68,29 +112,69 @@ module Fog
68
112
  :Password => @arubacloud_password
69
113
  }
70
114
  end
115
+
116
+ # Method generator to wrap around request inside requests files.
117
+ # @param [Hash] body
118
+ # @param [String] method_name
119
+ # @param [String] failure_message
120
+ # @param [Bool] benchmark
121
+ def request(body={}, method_name='', failure_message='', benchmark=true)
122
+ options = {
123
+ :http_method => :post,
124
+ :method => method_name,
125
+ :body => Fog::JSON.encode(body)
126
+ }
127
+ response = nil
128
+
129
+ if benchmark
130
+ time = Benchmark.realtime {
131
+ response = _request(options)
132
+ }
133
+ Fog::Logger.debug("#{options[:method]} took: #{time}")
134
+ else
135
+ response = _request(options)
136
+ end
137
+ if response['Success']
138
+ response
139
+ else
140
+ Fog::Logger.debug("Request failed. Debug: #{response}")
141
+ if !response['ResultMessage'] || response['ResultMessage'].empty?
142
+ raise Fog::ArubaCloud::Errors::RequestError.new(failure_message)
143
+ else
144
+ raise Fog::ArubaCloud::Errors::RequestError.new(response['ResultMessage'], response )
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+ class Mock < BaseObject
151
+ def initialize(*params)
152
+ super(*params)
153
+ end
154
+
155
+ def body(method)
156
+ super(method)
157
+ end
158
+
159
+ def request(body={}, method_name='', failure_message='', benchmark=true)
160
+ super(body, method_name, failure_message, benchmark)
161
+ end
71
162
  end #Mock
72
163
 
73
- class Real < Fog::ArubaCloud::Service
74
- def initialize(options={})
75
- @arubacloud_username = options[:arubacloud_username] || ''
76
- @arubacloud_password = options[:arubacloud_password] || ''
77
- @ws_enduser_url = options[:url] || Fog::ArubaCloud::DEFAULT_WS_ENDUSER_URL
164
+ class Real < BaseObject
165
+ def initialize(*params)
166
+ super(*params)
78
167
  end
79
168
 
80
- # Return the base json object used by each request.
81
- # @param method [String] the name of the method to call.
82
- # @return [Hash] base scheme for json request.
83
169
  def body(method)
84
- {
85
- :ApplicationId => method,
86
- :RequestId => method,
87
- :Sessionid => method,
88
- :Username => @arubacloud_username,
89
- :Password => @arubacloud_password
90
- }
170
+ super(method)
171
+ end
172
+
173
+ def request(body={}, method_name='', failure_message='', benchmark=true)
174
+ super(body, method_name, failure_message, benchmark)
91
175
  end
92
176
  end #Real
93
177
 
94
178
  end #ArubaCloud
95
179
  end #Compute
96
- end #Fog
180
+ end #Fog
@@ -59,6 +59,10 @@ module Fog
59
59
 
60
60
  end
61
61
 
62
+ class InvalidParameterValue < Error
63
+
64
+ end
65
+
62
66
  class InvalidStateException < ::RuntimeError
63
67
  attr_reader :desired_state
64
68
  attr_reader :current_state
@@ -16,7 +16,7 @@ module Fog
16
16
  @ws_enduser_url = url || Fog::ArubaCloud::DEFAULT_WS_ENDUSER_URL
17
17
  end
18
18
 
19
- def request(options)
19
+ def _request(options)
20
20
  http_method = options[:http_method] || :get
21
21
  @request_url = "#{@ws_enduser_url}/#{options[:method]}"
22
22
 
@@ -35,7 +35,9 @@ module Fog
35
35
  response = @connection.request(:method => http_method)
36
36
  rescue Excon::Errors::Timeout
37
37
  # raise an error
38
- raise Fog::ArubaCloud::Errors::RequestTimeOut.new("Request timed out after: #{60 unless params[:read_timeout]}")
38
+ raise Fog::ArubaCloud::Errors::RequestTimeOut.new(
39
+ "Request timed out after: #{60 unless params[:read_timeout]}"
40
+ )
39
41
  end
40
42
 
41
43
  # decode the response and return it
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  #
2
3
  # Author:: Alessio Rocchi (<alessio.rocchi@staff.aruba.it>)
3
4
  # © Copyright ArubaCloud.
@@ -6,7 +7,7 @@
6
7
  #
7
8
 
8
9
  module Fog
9
- module Arubacloud
10
- VERSION = '0.0.3'
10
+ module ArubaCloud
11
+ VERSION = '0.0.5'
11
12
  end
12
13
  end
@@ -10,22 +10,14 @@ require 'fog/json'
10
10
 
11
11
 
12
12
  module Fog
13
- module Compute
14
- autoload :ArubaCloud, File.expand_path('../arubacloud/compute', __FILE__)
15
-
16
- def self.new(attributes)
17
- attributes.delete(:provider)
18
- Fog::Compute::ArubaCloud.new(attributes)
19
- end
20
-
21
- end
22
-
23
13
  module ArubaCloud
24
14
  extend Fog::Provider
25
-
15
+
16
+ autoload :ArubaCloud, File.expand_path('../arubacloud/compute', __FILE__)
26
17
  DEFAULT_API_VERSION = '2.9'
27
18
  DEFAULT_WS_ENDUSER_URL = "https://api.dc2.computing.cloud.it/WsEndUser/v#{DEFAULT_API_VERSION}/WsEndUser.svc/json"
28
19
 
29
20
  service(:compute, 'Compute')
21
+
30
22
  end
31
- end
23
+ end
File without changes
@@ -0,0 +1,63 @@
1
+ require File.expand_path('spec/spec_helper')
2
+ require 'fog/arubacloud/compute/models/disk'
3
+
4
+ describe Fog::ArubaCloud::Compute::Disk do
5
+ include ModelSetup
6
+
7
+ let (:disk_class) do
8
+ class Fog::ArubaCloud::Compute::Disk
9
+ def self.read_identity
10
+ instance_variable_get('@identity')
11
+ end
12
+ end
13
+ Fog::ArubaCloud::Compute::Disk
14
+ end
15
+
16
+ let(:service) { Object.new }
17
+ let(:disk) { Fog::ArubaCloud::Compute::Disk.new }
18
+
19
+ it 'must respond to #create' do
20
+ disk.must_respond_to :create
21
+ end
22
+
23
+ describe '#create' do
24
+ describe 'passing a wrong disk size >500GB' do
25
+ before :each do
26
+ disk.size = 600
27
+ disk.virtual_disk_type = 1
28
+ end
29
+
30
+ it 'should raise BadDiskSize' do
31
+ disk.stub(:service, service) do
32
+ proc {disk.create}.must_raise Fog::ArubaCloud::Errors::BadDiskSize
33
+ end
34
+ end
35
+ end
36
+
37
+ describe 'passing wrong disk type (> 3)' do
38
+ before :each do
39
+ disk.size = 100
40
+ disk.virtual_disk_type = 4
41
+ end
42
+
43
+ it 'should raise BadDiskNumber' do
44
+ disk.stub(:service, service) do
45
+ proc {disk.create}.must_raise Fog::ArubaCloud::Errors::BadDiskNumber
46
+ end
47
+ end
48
+ end
49
+
50
+ describe 'passing correct values' do
51
+ before :each do
52
+ disk.size = 100
53
+ disk.virtual_disk_type = 1
54
+ end
55
+
56
+ it 'should return' do
57
+ disk.stub(:service, service) do
58
+ disk.create
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path('spec/spec_helper')
2
+ require File.expand_path('lib/fog/arubacloud/compute/models/disks')
3
+
4
+ describe Fog::ArubaCloud::Compute::Disks do
5
+ subject { Fog::ArubaCloud::Compute::Disks }
6
+
7
+ it 'should be a collection of Disk' do
8
+ subject.model.must_equal(Fog::ArubaCloud::Compute::Disk)
9
+ end
10
+
11
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path('spec/spec_helper')
2
+ require 'fog/arubacloud/compute/models/ip'
3
+
4
+ describe Fog::ArubaCloud::Compute::IP do
5
+ include ModelSetup
6
+
7
+ let (:ip_class) do
8
+ class Fog::ArubaCloud::Compute::IP
9
+ def self.read_identity
10
+ instance_variable_get('@identity')
11
+ end
12
+ end
13
+ Fog::ArubaCloud::Compute::IP
14
+ end
15
+
16
+ let(:service) { Object.new }
17
+ let(:ip) { Fog::ArubaCloud::Compute::IP.new }
18
+
19
+ it 'must respond to #purchase' do
20
+ ip.must_respond_to :purchase
21
+ end
22
+
23
+ it 'must respond to #remove' do
24
+ ip.must_respond_to :remove
25
+ end
26
+
27
+ describe '#remove' do
28
+ describe 'without ServerId set' do
29
+ before :each do
30
+ ip.id = nil
31
+ end
32
+
33
+ it 'should raise ArgumentError' do
34
+ ip.stub(:service, service) do
35
+ proc {ip.remove}.must_raise ArgumentError
36
+ end
37
+ end
38
+ end
39
+
40
+ describe 'still attached to the server' do
41
+ before :each do
42
+ ip.id = 23432
43
+ ip.server = 3254324
44
+ end
45
+
46
+ it 'should raise RequestError' do
47
+ ip.stub(:service, service) do
48
+ proc {ip.remove}.must_raise Fog::ArubaCloud::Errors::RequestError
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path('spec/spec_helper')
2
+ require 'fog/arubacloud/compute/models/ips'
3
+
4
+ describe Fog::ArubaCloud::Compute::Ips do
5
+ subject { Fog::ArubaCloud::Compute::Ips }
6
+
7
+ it 'should be a collection of IP' do
8
+ subject.model.must_equal(Fog::ArubaCloud::Compute::IP)
9
+ end
10
+
11
+ end