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,58 @@
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 add_lb_rule(data)
19
+ body = self.body('SetModifyLoadBalancer').merge(
20
+ :LoadBalancerStartRequest => {
21
+ :loadBalancerID => data[:id],
22
+ :NewLoadBalancerRule => [
23
+ {
24
+ :BalanceType => data[:balancetype],
25
+ :Certificate => data[:certificate],
26
+ :CreationDate => data[:creationdate],
27
+ :ID => data[:ruleid],
28
+ :InstancePort => data[:instanceport],
29
+ :LoadBalancerPort => data[:loadbalancerport],
30
+ :Protocol => data[:protocol]
31
+ }
32
+ ]
33
+ }
34
+ )
35
+ response = nil
36
+ time = Benchmark.realtime {
37
+ response = request(body, 'SetModifyLoadBalancer', 'SetModifyLoadBalancer Error')
38
+ }
39
+ Fog::Logger.debug("SetModifyLoadBalancer time: #{time}")
40
+ if response['Success']
41
+ response
42
+ else
43
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error during the request.')
44
+ end
45
+ end # add_lb_rule
46
+
47
+ class Mock
48
+ def add_lb_rule
49
+ raise Fog::Errors::MockNotImplemented.new(
50
+ 'Mock not implemented. Feel free to contribute.'
51
+ )
52
+ end # add_lb_rule
53
+ end # Mock
54
+ end # Real
55
+
56
+ end # Compute
57
+ end # ArubaCloud
58
+ end # Fog
@@ -0,0 +1,53 @@
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
+ # Apply a snapshot on a VM
19
+ def apply_snapshot(data)
20
+ (service.servers).all.each do |server|
21
+ id = server.id if (server.name).include? data[:name]
22
+ end
23
+ body = {
24
+ :Snapshot => {
25
+ :ServerId => id,
26
+ :SnapshotOperationTypes => 'Restore'
27
+ }
28
+ }
29
+ self.request(
30
+ body=body,
31
+ method_name='SetEnqueueServerSnapshot',
32
+ failure_message='Error while applying snapshot.'
33
+ )
34
+ end #Apply
35
+ end #Real
36
+
37
+ class Mock
38
+ def apply_snapshot
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 # apply snapshot
49
+ end # Real
50
+
51
+ end # Compute
52
+ end # ArubaCloud
53
+ end # Fog
@@ -0,0 +1,59 @@
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 archive_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('SetEnqueueServerArchiviation').merge(
23
+ {
24
+ :SetEnqueueServerArchiviation => {
25
+ :ServerId => id
26
+ }
27
+ }
28
+ )
29
+ response = nil
30
+ time = Benchmark.realtime {
31
+ response = request(body, 'SetEnqueueServerArchiviation', 'SetEnqueueServerArchiviation Error')
32
+ }
33
+ Fog::Logger.debug("SetEnqueueServerArchiviation time: #{time}")
34
+ if response['Success']
35
+ response
36
+ else
37
+ raise Fog::ArubaCloud::Errors::RequestError.new(response)
38
+ end
39
+
40
+ end # archive_vm
41
+ end # Real
42
+
43
+ class Mock
44
+ def archive_vm
45
+ response = Excon::Response.new
46
+ response.status = 200
47
+ response.body = {
48
+ 'ExceptionInfo' => nil,
49
+ 'ResultCode' => 0,
50
+ 'ResultMessage' => nil,
51
+ 'Success' => true
52
+ }
53
+ response.body
54
+ end # archive_vm
55
+ end # Mock
56
+
57
+ end # Compute
58
+ end # ArubaCloud
59
+ end # Fog
@@ -0,0 +1,76 @@
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
+ module Fog
14
+ module ArubaCloud
15
+ class Compute
16
+ class Real
17
+ def create_loadbalancer(data)
18
+ body = self.body('SetEnqueueLoadBalancerCreation').merge(
19
+ :LoadBalancerCreationRequest => {
20
+ :HealthCheckNotification => data[:healthchecknotification],
21
+ :Name => data[:name],
22
+ :rules => [
23
+ :LoadBalancerRule => [
24
+ {
25
+ :BalanceType => data[:balancetype],
26
+ :Certificate => data[:certificate],
27
+ :CreationDate => data[:creationdate],
28
+ :ID => data[:ruleid],
29
+ :InstancePort => data[:instanceport],
30
+ :LoadBalancerPort => data[:loadbalancerport],
31
+ :Protocol => data[:protocol]
32
+ }
33
+ ]
34
+ ],
35
+ :ipAddressesResourceId => data[:ipaddressesresourceid],
36
+ :NotificationContacts => [
37
+ :NotificationContact => [
38
+ {
39
+ :ContactValue => data[:contacvalue],
40
+ :LoadBalancerContactID => data[:loadbalancercontactid],
41
+ :Type => data[:type]
42
+ }
43
+ ]
44
+ ]
45
+ }
46
+ )
47
+ response = nil
48
+ time = Benchmark.realtime {
49
+ response = request(body, 'SetEnqueueLoadBalancerCreation', 'SetEnqueueLoadBalancerCreation Error')
50
+ }
51
+ Fog::Logger.debug("SetEnqueueLoadBalancerCreation time: #{time}")
52
+ if response['Success']
53
+ response
54
+ else
55
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error during the Load Balancer creation.')
56
+ end
57
+ end # create_loadbalancer
58
+
59
+ class Mock
60
+ def create_loadbalancer(data)
61
+ response = Excon::Response.new
62
+ response.status = 200
63
+ response.body = {
64
+ 'ExceptionInfo' => nil,
65
+ 'ResultCode' => 0,
66
+ 'ResultMessage' => nil,
67
+ 'Success' => true
68
+ }
69
+ response.body
70
+ end # create_loadbalancer
71
+ end # Mock
72
+ end # Real
73
+
74
+ end # Compute
75
+ end # ArubaCloud
76
+ end # Fog
@@ -0,0 +1,71 @@
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 create_scheduled_occurence(data)
19
+ body = self.body('SetAddServerScheduledOperation').merge(
20
+ :NewSchedulePlan => {
21
+ :FirstExecutionTime => data[:dateStart],
22
+ :LastExecutionTime => data[:endDate],
23
+ :OperationType => data[:OperationType],
24
+ :ServerID => data[:ServerId],
25
+ }
26
+ )
27
+ if data[:frequencyType].include? 'Monthly'
28
+ body[:NewSchedulePlan] << {
29
+ :ScheduleDaysOfMonth => [{
30
+ :int => data[:daysOfMonth]
31
+ }]
32
+ }
33
+ elsif data[:frequencyType].include? 'MonthlyRelative'
34
+ body[:NewSchedulePlan] << {
35
+ :ScheduledMontlyRecurrence => data[:monthlyRecurrence]
36
+ }
37
+ elsif data[:frequencyType].include? 'Weekly'
38
+ body[:NewSchedulePlan] << {
39
+ :ScheduleWeekDays => [{
40
+ :ScheduleWeekDays => data[:daysOfWeek]
41
+ }]
42
+ }
43
+ elsif data[:frequencyType].include? 'Daily' or data[:frequencyType].include? 'Hourly'
44
+ body[:NewSchedulePlan] << {
45
+ :ScheduleFrequencyType => data[:frequency]
46
+ }
47
+ end
48
+ response = nil
49
+ time = Benchmark.realtime {
50
+ response = request(body, 'SetAddServerScheduledOperation', 'SetAddServerScheduledOperation Error')
51
+ }
52
+ Fog::Logger.debug("SetAddServerScheduledOperation time: #{time}")
53
+ if response['Success']
54
+ response
55
+ else
56
+ raise Fog::ArubaCloud::Errors::RequestError.new('Error during the Scheduled Operation creation.')
57
+ end
58
+ end # create_scheduled_occurence
59
+
60
+ class Mock
61
+ def create_scheduled_occurence
62
+ raise Fog::Errors::MockNotImplemented.new(
63
+ 'Mock not implemented. Feel free to contribute.'
64
+ )
65
+ end # create_scheduled_occurence
66
+ end # Mock
67
+ end # Real
68
+
69
+ end # Compute
70
+ end # ArubaCloud
71
+ end # Fog
@@ -0,0 +1,56 @@
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
+
12
+
13
+ module Fog
14
+ module ArubaCloud
15
+ class Compute
16
+ class Real
17
+ def create_scheduled_operation(data)
18
+ body = {
19
+ :NewSchedulePlan => {
20
+ :FirstExecutionTime => data[:dateStart],
21
+ :LastExecutionTime => data[:endDate],
22
+ :OperationType => data[:OperationType],
23
+ :ServerID => data[:ServerId],
24
+ :ScheduledPlanStatus => 'Enabled'
25
+ }
26
+ }
27
+ self.request(
28
+ body=body,
29
+ method_name='SetAddServerScheduledOperation',
30
+ failure_message='Error configuring Scheduled Operation.',
31
+ benchmark=true
32
+ )
33
+ end # create_scheduled_operation
34
+ end # Real
35
+
36
+ class Mock
37
+ def create_scheduled_operation(data)
38
+ unless data['ServerId']
39
+ raise ArgumentError
40
+ end
41
+ self.servers.select!{|s| s.id.eql?(data['ServerId'])}
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 # create_scheduled_operation
52
+ end # Mock
53
+
54
+ end # Compute
55
+ end # ArubaCloud
56
+ end # Fog
@@ -0,0 +1,55 @@
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 create_shared_storage(data)
19
+ body = {
20
+ :SharedStorage => {
21
+ :Quantity => data[:quantity],
22
+ :SharedStorageName => data[:sharedstoragename],
23
+ :SharedStorageProtocolType => data[:sharedstorageprotocoltype],
24
+ }
25
+ }
26
+ unless data[:sharedstorageprotocoltype].include? 'ISCSI'
27
+ body[:SharedStorage] << {
28
+ :Value => data[:Value]
29
+ }
30
+ end
31
+ self.request(
32
+ body,
33
+ 'SetEnqueuePurchaseSharedStorage',
34
+ 'Error during Shared Storage creation.'
35
+ )
36
+ end
37
+ end # Real
38
+
39
+ class Mock
40
+ def create_shared_storage(data)
41
+ response = Excon::Response.new
42
+ response.status = 200
43
+ response.body = {
44
+ 'ExceptionInfo' => nil,
45
+ 'ResultCode' => 0,
46
+ 'ResultMessage' => nil,
47
+ 'Success' => true
48
+ }
49
+ response.body
50
+ end # create_shared_storage
51
+ end # Mock
52
+
53
+ end # Compute
54
+ end # ArubaCloud
55
+ end # Fog
@@ -0,0 +1,54 @@
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
+
18
+ class Real
19
+ # Create a new snapshot of a VM
20
+ def create_snapshot(data)
21
+ (service.servers).all.each do |server|
22
+ id = server.id if (server.name).include? data[:name]
23
+ end
24
+ body = {
25
+ :Snapshot => {
26
+ :ServerId => id,
27
+ :SnapshotOperationTypes => 'Create'
28
+ }
29
+ }
30
+ self.request(
31
+ body=body,
32
+ method_name='SetEnqueueServerSnapshot',
33
+ failure_message='Error while attempting to create a snapshot.'
34
+ )
35
+ end #Create_snapshot
36
+ end #Real
37
+
38
+ class Mock
39
+ def create_snapshot
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
+ }
48
+ response.body
49
+ end # create snapshot
50
+ end # Mock
51
+
52
+ end # Compute
53
+ end # ArubaCloud
54
+ 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.
@@ -9,8 +10,8 @@ require 'fog/arubacloud/service'
9
10
  require 'benchmark'
10
11
 
11
12
  module Fog
12
- module Compute
13
- class ArubaCloud
13
+ module ArubaCloud
14
+ class Compute
14
15
  class Real
15
16
  # Create a new VM: Pro.
16
17
  # @param [String] name name of the server
@@ -49,15 +50,9 @@ module Fog
49
50
  data[:disks].each { |d| body[:Server][:VirtualDisks] << d}
50
51
  end
51
52
 
52
- options = {
53
- :http_method => :post,
54
- :method => 'SetEnqueueServerCreation',
55
- :body => Fog::JSON.encode(body)
56
- }
57
-
58
53
  response = nil
59
54
  time = Benchmark.realtime {
60
- response = request(options)
55
+ response = request(body, 'SetEnqueueServerCreation', 'SetEnqueueServerCreation Error')
61
56
  }
62
57
  Fog::Logger.debug("SetEnqueueServerCreation time: #{time}")
63
58
  if response['Success']
@@ -80,9 +75,9 @@ module Fog
80
75
  'Success' => true
81
76
  }
82
77
  response.body
83
- end
84
- end
78
+ end # create_vm_pro
79
+ end # Mock
85
80
 
86
- end # ArubaCloud
87
- end # Compute
88
- end # Fog
81
+ end # Compute
82
+ end # ArubaCloud
83
+ 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.
@@ -8,8 +9,8 @@
8
9
  require 'fog/arubacloud/service'
9
10
 
10
11
  module Fog
11
- module Compute
12
- class ArubaCloud
12
+ module ArubaCloud
13
+ class Compute
13
14
  class Real
14
15
  # Create a new VM: Smart.
15
16
  # @param [String] name name of the server
@@ -22,35 +23,30 @@ module Fog
22
23
  # * 4 => extra-large
23
24
  # @param [String] note Metadata for VM
24
25
  # @return [Excon::Response]
26
+
25
27
  def create_vm_smart(data)
28
+ idPackage = self.get_package_id( data[:package_id] )
26
29
  body = self.body('SetEnqueueServerCreation').merge(
27
30
  {
28
31
  :Server => {
29
32
  :AdministratorPassword => data[:admin_passwd],
30
33
  :Name => data[:name],
31
- :SmartVMWarePackageID => data[:size] || 1,
34
+ :SmartVMWarePackageID => idPackage || 1 ,
32
35
  :Note => data[:note] || 'Created by Fog Cloud.',
33
36
  :OSTemplateId => data[:template_id]
34
37
  }
35
38
  }
36
39
  )
37
40
 
38
- options = {
39
- :http_method => :post,
40
- :method => 'SetEnqueueServerCreation',
41
- :body => Fog::JSON.encode(body),
42
- }
43
-
44
41
  response = nil
45
42
  time = Benchmark.realtime {
46
- response = request(options)
43
+ response = request( body, 'SetEnqueueServerCreation', "Smart_vm creation error" )
47
44
  }
48
45
  Fog::Logger.debug("SetEnqueueServerCreation time: #{time}")
49
46
  if response['Success']
50
47
  response
51
48
  else
52
- raise Fog::ArubaCloud::Errors::RequestError.new("Error during the VM creation. Object: \n#{body}",
53
- response=response)
49
+ raise Fog::ArubaCloud::Errors::RequestError.new("Error during the VM creation. Object: \n#{body}", response=response)
54
50
  end
55
51
  end
56
52
  end
@@ -69,6 +65,6 @@ module Fog
69
65
  end # create_vm_smart
70
66
  end # Mock
71
67
 
72
- end # ArubaCloud
73
- end # Compute
74
- end # Fog
68
+ end # Compute
69
+ end # ArubaCloud
70
+ 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
+
18
+ class Real
19
+ def delete_custom_template(data)
20
+ body = {
21
+ :template => {
22
+ :templateID => data[:id]
23
+ }
24
+ }
25
+ self.request(
26
+ body=body,
27
+ method_name='SetRemovePersonalTemplate',
28
+ failure_message='Error while attempting to delete custom template.'
29
+ )
30
+ end # delete_custom_template
31
+ end # Real
32
+
33
+ class Mock
34
+ def delete_custom_template
35
+ raise Fog::Errors::MockNotImplemented.new(
36
+ 'Mock not implemented. Feel free to contribute.'
37
+ )
38
+ end # delete_custom_template
39
+ end # Mock
40
+
41
+ end # Compute
42
+ end # ArubaCloud
43
+ 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 delete_scheduled_operation(operationid)
19
+ body = self.body('SetRemoveServerScheduledOperation').merge({:operationid => operationid})
20
+ response = nil
21
+ time = Benchmark.realtime {
22
+ response = request(body, 'SetRemoveServerScheduledOperation', 'SetRemoveServerScheduledOperation Error')
23
+ }
24
+ Fog::Logger.debug("SetRemoveServerScheduledOperation 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