opennebula 6.6.1 → 6.6.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,224 +18,218 @@ require 'opennebula/lockable_ext'
18
18
  require 'opennebula/pool_element'
19
19
 
20
20
  module OpenNebula
21
+
21
22
  class VirtualMachine < PoolElement
23
+
22
24
  #######################################################################
23
25
  # Constants and Class Methods
24
26
  #######################################################################
25
27
 
26
28
  VM_METHODS = {
27
- :info => "vm.info",
28
- :allocate => "vm.allocate",
29
- :action => "vm.action",
30
- :migrate => "vm.migrate",
31
- :deploy => "vm.deploy",
32
- :chown => "vm.chown",
33
- :chmod => "vm.chmod",
34
- :monitoring => "vm.monitoring",
35
- :attach => "vm.attach",
36
- :detach => "vm.detach",
37
- :rename => "vm.rename",
38
- :update => "vm.update",
39
- :resize => "vm.resize",
40
- :snapshotcreate => "vm.snapshotcreate",
41
- :snapshotrevert => "vm.snapshotrevert",
42
- :snapshotdelete => "vm.snapshotdelete",
43
- :attachnic => "vm.attachnic",
44
- :detachnic => "vm.detachnic",
45
- :recover => "vm.recover",
46
- :disksaveas => "vm.disksaveas",
47
- :disksnapshotcreate => "vm.disksnapshotcreate",
48
- :disksnapshotrevert => "vm.disksnapshotrevert",
49
- :disksnapshotdelete => "vm.disksnapshotdelete",
50
- :disksnapshotrename => "vm.disksnapshotrename",
51
- :diskresize => "vm.diskresize",
52
- :updateconf => "vm.updateconf",
53
- :lock => "vm.lock",
54
- :unlock => "vm.unlock",
55
- :schedadd => "vm.schedadd",
56
- :scheddelete => "vm.scheddelete",
57
- :schedupdate => "vm.schedupdate",
58
- :attachsg => "vm.attachsg",
59
- :detachsg => "vm.detachsg",
60
- :backup => "vm.backup",
61
- :updatenic => "vm.updatenic"
29
+ :info => 'vm.info',
30
+ :allocate => 'vm.allocate',
31
+ :action => 'vm.action',
32
+ :migrate => 'vm.migrate',
33
+ :deploy => 'vm.deploy',
34
+ :chown => 'vm.chown',
35
+ :chmod => 'vm.chmod',
36
+ :monitoring => 'vm.monitoring',
37
+ :attach => 'vm.attach',
38
+ :detach => 'vm.detach',
39
+ :rename => 'vm.rename',
40
+ :update => 'vm.update',
41
+ :resize => 'vm.resize',
42
+ :snapshotcreate => 'vm.snapshotcreate',
43
+ :snapshotrevert => 'vm.snapshotrevert',
44
+ :snapshotdelete => 'vm.snapshotdelete',
45
+ :attachnic => 'vm.attachnic',
46
+ :detachnic => 'vm.detachnic',
47
+ :recover => 'vm.recover',
48
+ :disksaveas => 'vm.disksaveas',
49
+ :disksnapshotcreate => 'vm.disksnapshotcreate',
50
+ :disksnapshotrevert => 'vm.disksnapshotrevert',
51
+ :disksnapshotdelete => 'vm.disksnapshotdelete',
52
+ :disksnapshotrename => 'vm.disksnapshotrename',
53
+ :diskresize => 'vm.diskresize',
54
+ :updateconf => 'vm.updateconf',
55
+ :lock => 'vm.lock',
56
+ :unlock => 'vm.unlock',
57
+ :schedadd => 'vm.schedadd',
58
+ :scheddelete => 'vm.scheddelete',
59
+ :schedupdate => 'vm.schedupdate',
60
+ :attachsg => 'vm.attachsg',
61
+ :detachsg => 'vm.detachsg',
62
+ :backup => 'vm.backup',
63
+ :updatenic => 'vm.updatenic',
64
+ :backupcancel => 'vm.backupcancel'
62
65
  }
63
66
 
64
- VM_STATE=%w{INIT PENDING HOLD ACTIVE STOPPED SUSPENDED DONE FAILED
65
- POWEROFF UNDEPLOYED CLONING CLONING_FAILURE}
66
-
67
- LCM_STATE=%w{
68
- LCM_INIT
69
- PROLOG
70
- BOOT
71
- RUNNING
72
- MIGRATE
73
- SAVE_STOP
74
- SAVE_SUSPEND
75
- SAVE_MIGRATE
76
- PROLOG_MIGRATE
77
- PROLOG_RESUME
78
- EPILOG_STOP
79
- EPILOG
80
- SHUTDOWN
81
- CANCEL
82
- FAILURE
83
- CLEANUP_RESUBMIT
84
- UNKNOWN
85
- HOTPLUG
86
- SHUTDOWN_POWEROFF
87
- BOOT_UNKNOWN
88
- BOOT_POWEROFF
89
- BOOT_SUSPENDED
90
- BOOT_STOPPED
91
- CLEANUP_DELETE
92
- HOTPLUG_SNAPSHOT
93
- HOTPLUG_NIC
94
- HOTPLUG_SAVEAS
95
- HOTPLUG_SAVEAS_POWEROFF
96
- HOTPLUG_SAVEAS_SUSPENDED
97
- SHUTDOWN_UNDEPLOY
98
- EPILOG_UNDEPLOY
99
- PROLOG_UNDEPLOY
100
- BOOT_UNDEPLOY
101
- HOTPLUG_PROLOG_POWEROFF
102
- HOTPLUG_EPILOG_POWEROFF
103
- BOOT_MIGRATE
104
- BOOT_FAILURE
105
- BOOT_MIGRATE_FAILURE
106
- PROLOG_MIGRATE_FAILURE
107
- PROLOG_FAILURE
108
- EPILOG_FAILURE
109
- EPILOG_STOP_FAILURE
110
- EPILOG_UNDEPLOY_FAILURE
111
- PROLOG_MIGRATE_POWEROFF
112
- PROLOG_MIGRATE_POWEROFF_FAILURE
113
- PROLOG_MIGRATE_SUSPEND
114
- PROLOG_MIGRATE_SUSPEND_FAILURE
115
- BOOT_UNDEPLOY_FAILURE
116
- BOOT_STOPPED_FAILURE
117
- PROLOG_RESUME_FAILURE
118
- PROLOG_UNDEPLOY_FAILURE
119
- DISK_SNAPSHOT_POWEROFF
120
- DISK_SNAPSHOT_REVERT_POWEROFF
121
- DISK_SNAPSHOT_DELETE_POWEROFF
122
- DISK_SNAPSHOT_SUSPENDED
123
- DISK_SNAPSHOT_REVERT_SUSPENDED
124
- DISK_SNAPSHOT_DELETE_SUSPENDED
125
- DISK_SNAPSHOT
126
- DISK_SNAPSHOT_REVERT
127
- DISK_SNAPSHOT_DELETE
128
- PROLOG_MIGRATE_UNKNOWN
129
- PROLOG_MIGRATE_UNKNOWN_FAILURE
130
- DISK_RESIZE
131
- DISK_RESIZE_POWEROFF
132
- DISK_RESIZE_UNDEPLOYED
133
- HOTPLUG_NIC_POWEROFF
134
- HOTPLUG_RESIZE
135
- HOTPLUG_SAVEAS_UNDEPLOYED
136
- HOTPLUG_SAVEAS_STOPPED
137
- BACKUP
138
- BACKUP_POWEROFF
139
- }
67
+ VM_STATE=['INIT', 'PENDING', 'HOLD', 'ACTIVE', 'STOPPED', 'SUSPENDED', 'DONE', 'FAILED',
68
+ 'POWEROFF', 'UNDEPLOYED', 'CLONING', 'CLONING_FAILURE']
69
+
70
+ LCM_STATE=[
71
+ 'LCM_INIT',
72
+ 'PROLOG',
73
+ 'BOOT',
74
+ 'RUNNING',
75
+ 'MIGRATE',
76
+ 'SAVE_STOP',
77
+ 'SAVE_SUSPEND',
78
+ 'SAVE_MIGRATE',
79
+ 'PROLOG_MIGRATE',
80
+ 'PROLOG_RESUME',
81
+ 'EPILOG_STOP',
82
+ 'EPILOG',
83
+ 'SHUTDOWN',
84
+ 'CANCEL',
85
+ 'FAILURE',
86
+ 'CLEANUP_RESUBMIT',
87
+ 'UNKNOWN',
88
+ 'HOTPLUG',
89
+ 'SHUTDOWN_POWEROFF',
90
+ 'BOOT_UNKNOWN',
91
+ 'BOOT_POWEROFF',
92
+ 'BOOT_SUSPENDED',
93
+ 'BOOT_STOPPED',
94
+ 'CLEANUP_DELETE',
95
+ 'HOTPLUG_SNAPSHOT',
96
+ 'HOTPLUG_NIC',
97
+ 'HOTPLUG_SAVEAS',
98
+ 'HOTPLUG_SAVEAS_POWEROFF',
99
+ 'HOTPLUG_SAVEAS_SUSPENDED',
100
+ 'SHUTDOWN_UNDEPLOY',
101
+ 'EPILOG_UNDEPLOY',
102
+ 'PROLOG_UNDEPLOY',
103
+ 'BOOT_UNDEPLOY',
104
+ 'HOTPLUG_PROLOG_POWEROFF',
105
+ 'HOTPLUG_EPILOG_POWEROFF',
106
+ 'BOOT_MIGRATE',
107
+ 'BOOT_FAILURE',
108
+ 'BOOT_MIGRATE_FAILURE',
109
+ 'PROLOG_MIGRATE_FAILURE',
110
+ 'PROLOG_FAILURE',
111
+ 'EPILOG_FAILURE',
112
+ 'EPILOG_STOP_FAILURE',
113
+ 'EPILOG_UNDEPLOY_FAILURE',
114
+ 'PROLOG_MIGRATE_POWEROFF',
115
+ 'PROLOG_MIGRATE_POWEROFF_FAILURE',
116
+ 'PROLOG_MIGRATE_SUSPEND',
117
+ 'PROLOG_MIGRATE_SUSPEND_FAILURE',
118
+ 'BOOT_UNDEPLOY_FAILURE',
119
+ 'BOOT_STOPPED_FAILURE',
120
+ 'PROLOG_RESUME_FAILURE',
121
+ 'PROLOG_UNDEPLOY_FAILURE',
122
+ 'DISK_SNAPSHOT_POWEROFF',
123
+ 'DISK_SNAPSHOT_REVERT_POWEROFF',
124
+ 'DISK_SNAPSHOT_DELETE_POWEROFF',
125
+ 'DISK_SNAPSHOT_SUSPENDED',
126
+ 'DISK_SNAPSHOT_REVERT_SUSPENDED',
127
+ 'DISK_SNAPSHOT_DELETE_SUSPENDED',
128
+ 'DISK_SNAPSHOT',
129
+ 'DISK_SNAPSHOT_REVERT',
130
+ 'DISK_SNAPSHOT_DELETE',
131
+ 'PROLOG_MIGRATE_UNKNOWN',
132
+ 'PROLOG_MIGRATE_UNKNOWN_FAILURE',
133
+ 'DISK_RESIZE',
134
+ 'DISK_RESIZE_POWEROFF',
135
+ 'DISK_RESIZE_UNDEPLOYED',
136
+ 'HOTPLUG_NIC_POWEROFF',
137
+ 'HOTPLUG_RESIZE',
138
+ 'HOTPLUG_SAVEAS_UNDEPLOYED',
139
+ 'HOTPLUG_SAVEAS_STOPPED',
140
+ 'BACKUP',
141
+ 'BACKUP_POWEROFF'
142
+ ]
140
143
 
141
144
  SHORT_VM_STATES={
142
- "INIT" => "init",
143
- "PENDING" => "pend",
144
- "HOLD" => "hold",
145
- "ACTIVE" => "actv",
146
- "STOPPED" => "stop",
147
- "SUSPENDED" => "susp",
148
- "DONE" => "done",
149
- "FAILED" => "fail",
150
- "POWEROFF" => "poff",
151
- "UNDEPLOYED" => "unde",
152
- "CLONING" => "clon",
153
- "CLONING_FAILURE" => "fail"
145
+ 'INIT' => 'init',
146
+ 'PENDING' => 'pend',
147
+ 'HOLD' => 'hold',
148
+ 'ACTIVE' => 'actv',
149
+ 'STOPPED' => 'stop',
150
+ 'SUSPENDED' => 'susp',
151
+ 'DONE' => 'done',
152
+ 'FAILED' => 'fail',
153
+ 'POWEROFF' => 'poff',
154
+ 'UNDEPLOYED' => 'unde',
155
+ 'CLONING' => 'clon',
156
+ 'CLONING_FAILURE' => 'fail'
154
157
  }
155
158
 
156
159
  SHORT_LCM_STATES={
157
- "PROLOG" => "prol",
158
- "BOOT" => "boot",
159
- "RUNNING" => "runn",
160
- "MIGRATE" => "migr",
161
- "SAVE_STOP" => "save",
162
- "SAVE_SUSPEND" => "save",
163
- "SAVE_MIGRATE" => "save",
164
- "PROLOG_MIGRATE" => "migr",
165
- "PROLOG_RESUME" => "prol",
166
- "EPILOG_STOP" => "epil",
167
- "EPILOG" => "epil",
168
- "SHUTDOWN" => "shut",
169
- "CANCEL" => "shut",
170
- "FAILURE" => "fail",
171
- "CLEANUP_RESUBMIT" => "clea",
172
- "UNKNOWN" => "unkn",
173
- "HOTPLUG" => "hotp",
174
- "SHUTDOWN_POWEROFF" => "shut",
175
- "BOOT_UNKNOWN" => "boot",
176
- "BOOT_POWEROFF" => "boot",
177
- "BOOT_SUSPENDED" => "boot",
178
- "BOOT_STOPPED" => "boot",
179
- "CLEANUP_DELETE" => "clea",
180
- "HOTPLUG_SNAPSHOT" => "snap",
181
- "HOTPLUG_NIC" => "hotp",
182
- "HOTPLUG_SAVEAS" => "hotp",
183
- "HOTPLUG_SAVEAS_POWEROFF" => "hotp",
184
- "HOTPLUG_SAVEAS_SUSPENDED" => "hotp",
185
- "SHUTDOWN_UNDEPLOY" => "shut",
186
- "EPILOG_UNDEPLOY" => "epil",
187
- "PROLOG_UNDEPLOY" => "prol",
188
- "BOOT_UNDEPLOY" => "boot",
189
- "HOTPLUG_PROLOG_POWEROFF" => "hotp",
190
- "HOTPLUG_EPILOG_POWEROFF" => "hotp",
191
- "BOOT_MIGRATE" => "boot",
192
- "BOOT_FAILURE" => "fail",
193
- "BOOT_MIGRATE_FAILURE" => "fail",
194
- "PROLOG_MIGRATE_FAILURE" => "fail",
195
- "PROLOG_FAILURE" => "fail",
196
- "EPILOG_FAILURE" => "fail",
197
- "EPILOG_STOP_FAILURE" => "fail",
198
- "EPILOG_UNDEPLOY_FAILURE" => "fail",
199
- "PROLOG_MIGRATE_POWEROFF" => "migr",
200
- "PROLOG_MIGRATE_POWEROFF_FAILURE" => "fail",
201
- "PROLOG_MIGRATE_SUSPEND" => "migr",
202
- "PROLOG_MIGRATE_SUSPEND_FAILURE" => "fail",
203
- "BOOT_UNDEPLOY_FAILURE" => "fail",
204
- "BOOT_STOPPED_FAILURE" => "fail",
205
- "PROLOG_RESUME_FAILURE" => "fail",
206
- "PROLOG_UNDEPLOY_FAILURE" => "fail",
207
- "DISK_SNAPSHOT_POWEROFF" => "snap",
208
- "DISK_SNAPSHOT_REVERT_POWEROFF" => "snap",
209
- "DISK_SNAPSHOT_DELETE_POWEROFF" => "snap",
210
- "DISK_SNAPSHOT_SUSPENDED" => "snap",
211
- "DISK_SNAPSHOT_REVERT_SUSPENDED"=> "snap",
212
- "DISK_SNAPSHOT_DELETE_SUSPENDED"=> "snap",
213
- "DISK_SNAPSHOT" => "snap",
214
- "DISK_SNAPSHOT_DELETE" => "snap",
215
- "PROLOG_MIGRATE_UNKNOWN" => "migr",
216
- "PROLOG_MIGRATE_UNKNOWN_FAILURE" => "fail",
217
- "DISK_RESIZE" => "drsz",
218
- "DISK_RESIZE_POWEROFF" => "drsz",
219
- "DISK_RESIZE_UNDEPLOYED" => "drsz",
220
- "HOTPLUG_NIC_POWEROFF" => "hotp",
221
- "HOTPLUG_RESIZE" => "hotp",
222
- "HOTPLUG_SAVEAS_UNDEPLOYED" => "hotp",
223
- "HOTPLUG_SAVEAS_STOPPED" => "hotp",
224
- "BACKUP" => "back",
225
- "BACKUP_POWEROFF" => "back",
160
+ 'PROLOG' => 'prol',
161
+ 'BOOT' => 'boot',
162
+ 'RUNNING' => 'runn',
163
+ 'MIGRATE' => 'migr',
164
+ 'SAVE_STOP' => 'save',
165
+ 'SAVE_SUSPEND' => 'save',
166
+ 'SAVE_MIGRATE' => 'save',
167
+ 'PROLOG_MIGRATE' => 'migr',
168
+ 'PROLOG_RESUME' => 'prol',
169
+ 'EPILOG_STOP' => 'epil',
170
+ 'EPILOG' => 'epil',
171
+ 'SHUTDOWN' => 'shut',
172
+ 'CANCEL' => 'shut',
173
+ 'FAILURE' => 'fail',
174
+ 'CLEANUP_RESUBMIT' => 'clea',
175
+ 'UNKNOWN' => 'unkn',
176
+ 'HOTPLUG' => 'hotp',
177
+ 'SHUTDOWN_POWEROFF' => 'shut',
178
+ 'BOOT_UNKNOWN' => 'boot',
179
+ 'BOOT_POWEROFF' => 'boot',
180
+ 'BOOT_SUSPENDED' => 'boot',
181
+ 'BOOT_STOPPED' => 'boot',
182
+ 'CLEANUP_DELETE' => 'clea',
183
+ 'HOTPLUG_SNAPSHOT' => 'snap',
184
+ 'HOTPLUG_NIC' => 'hotp',
185
+ 'HOTPLUG_SAVEAS' => 'hotp',
186
+ 'HOTPLUG_SAVEAS_POWEROFF' => 'hotp',
187
+ 'HOTPLUG_SAVEAS_SUSPENDED' => 'hotp',
188
+ 'SHUTDOWN_UNDEPLOY' => 'shut',
189
+ 'EPILOG_UNDEPLOY' => 'epil',
190
+ 'PROLOG_UNDEPLOY' => 'prol',
191
+ 'BOOT_UNDEPLOY' => 'boot',
192
+ 'HOTPLUG_PROLOG_POWEROFF' => 'hotp',
193
+ 'HOTPLUG_EPILOG_POWEROFF' => 'hotp',
194
+ 'BOOT_MIGRATE' => 'boot',
195
+ 'BOOT_FAILURE' => 'fail',
196
+ 'BOOT_MIGRATE_FAILURE' => 'fail',
197
+ 'PROLOG_MIGRATE_FAILURE' => 'fail',
198
+ 'PROLOG_FAILURE' => 'fail',
199
+ 'EPILOG_FAILURE' => 'fail',
200
+ 'EPILOG_STOP_FAILURE' => 'fail',
201
+ 'EPILOG_UNDEPLOY_FAILURE' => 'fail',
202
+ 'PROLOG_MIGRATE_POWEROFF' => 'migr',
203
+ 'PROLOG_MIGRATE_POWEROFF_FAILURE' => 'fail',
204
+ 'PROLOG_MIGRATE_SUSPEND' => 'migr',
205
+ 'PROLOG_MIGRATE_SUSPEND_FAILURE' => 'fail',
206
+ 'BOOT_UNDEPLOY_FAILURE' => 'fail',
207
+ 'BOOT_STOPPED_FAILURE' => 'fail',
208
+ 'PROLOG_RESUME_FAILURE' => 'fail',
209
+ 'PROLOG_UNDEPLOY_FAILURE' => 'fail',
210
+ 'DISK_SNAPSHOT_POWEROFF' => 'snap',
211
+ 'DISK_SNAPSHOT_REVERT_POWEROFF' => 'snap',
212
+ 'DISK_SNAPSHOT_DELETE_POWEROFF' => 'snap',
213
+ 'DISK_SNAPSHOT_SUSPENDED' => 'snap',
214
+ 'DISK_SNAPSHOT_REVERT_SUSPENDED'=> 'snap',
215
+ 'DISK_SNAPSHOT_DELETE_SUSPENDED'=> 'snap',
216
+ 'DISK_SNAPSHOT' => 'snap',
217
+ 'DISK_SNAPSHOT_DELETE' => 'snap',
218
+ 'PROLOG_MIGRATE_UNKNOWN' => 'migr',
219
+ 'PROLOG_MIGRATE_UNKNOWN_FAILURE' => 'fail',
220
+ 'DISK_RESIZE' => 'drsz',
221
+ 'DISK_RESIZE_POWEROFF' => 'drsz',
222
+ 'DISK_RESIZE_UNDEPLOYED' => 'drsz',
223
+ 'HOTPLUG_NIC_POWEROFF' => 'hotp',
224
+ 'HOTPLUG_RESIZE' => 'hotp',
225
+ 'HOTPLUG_SAVEAS_UNDEPLOYED' => 'hotp',
226
+ 'HOTPLUG_SAVEAS_STOPPED' => 'hotp',
227
+ 'BACKUP' => 'back',
228
+ 'BACKUP_POWEROFF' => 'back'
226
229
  }
227
230
 
228
- HISTORY_ACTION=%w{none migrate live-migrate shutdown shutdown-hard
229
- undeploy undeploy-hard hold release stop suspend resume boot delete
230
- delete-recreate reboot reboot-hard resched unresched poweroff
231
- poweroff-hard disk-attach disk-detach nic-attach nic-detach
232
- disk-snapshot-create disk-snapshot-delete terminate terminate-hard
233
- disk-resize deploy chown chmod updateconf rename resize update
234
- snapshot-resize snapshot-delete snapshot-revert disk-saveas
235
- disk-snapshot-revert recover retry monitor disk-snapshot-rename
236
- alias-attach alias-detach poweroff-migrate poweroff-hard-migrate
237
- backup nic-update
238
- }
231
+ HISTORY_ACTION=['none', 'migrate', 'live-migrate', 'shutdown', 'shutdown-hard', 'undeploy',
232
+ 'undeploy-hard', 'hold', 'release', 'stop', 'suspend', 'resume', 'boot', 'delete', 'delete-recreate', 'reboot', 'reboot-hard', 'resched', 'unresched', 'poweroff', 'poweroff-hard', 'disk-attach', 'disk-detach', 'nic-attach', 'nic-detach', 'disk-snapshot-create', 'disk-snapshot-delete', 'terminate', 'terminate-hard', 'disk-resize', 'deploy', 'chown', 'chmod', 'updateconf', 'rename', 'resize', 'update', 'snapshot-resize', 'snapshot-delete', 'snapshot-revert', 'disk-saveas', 'disk-snapshot-revert', 'recover', 'retry', 'monitor', 'disk-snapshot-rename', 'alias-attach', 'alias-detach', 'poweroff-migrate', 'poweroff-hard-migrate', 'backup', 'nic-update']
239
233
 
240
234
  EXTERNAL_IP_ATTRS = [
241
235
  'GUEST_IP',
@@ -248,14 +242,15 @@ module OpenNebula
248
242
 
249
243
  # VirtualMachineDriver constants
250
244
  module Driver
245
+
251
246
  POLL_ATTRIBUTE = {
252
- :memory => "MEMORY",
253
- :cpu => "CPU",
254
- :nettx => "NETTX",
255
- :netrx => "NETRX",
256
- :state => "STATE",
257
- :disk_size => "DISK_SIZE",
258
- :snapshot_size => "SNAPSHOT_SIZE"
247
+ :memory => 'MEMORY',
248
+ :cpu => 'CPU',
249
+ :nettx => 'NETTX',
250
+ :netrx => 'NETRX',
251
+ :state => 'STATE',
252
+ :disk_size => 'DISK_SIZE',
253
+ :snapshot_size => 'SNAPSHOT_SIZE'
259
254
  }
260
255
 
261
256
  VM_STATE = {
@@ -265,6 +260,7 @@ module OpenNebula
265
260
  :deleted => 'd',
266
261
  :unknown => '-'
267
262
  }
263
+
268
264
  end
269
265
 
270
266
  # Creates a VirtualMachine description with just its identifier
@@ -274,25 +270,25 @@ module OpenNebula
274
270
  # Example:
275
271
  # vm = VirtualMachine.new(VirtualMachine.build_xml(3),rpc_client)
276
272
  #
277
- def VirtualMachine.build_xml(pe_id=nil)
273
+ def self.build_xml(pe_id = nil)
278
274
  if pe_id
279
275
  vm_xml = "<VM><ID>#{pe_id}</ID></VM>"
280
276
  else
281
- vm_xml = "<VM></VM>"
277
+ vm_xml = '<VM></VM>'
282
278
  end
283
279
 
284
280
  XMLElement.build_xml(vm_xml, 'VM')
285
281
  end
286
282
 
287
- def VirtualMachine.get_history_action(action)
288
- return HISTORY_ACTION[action.to_i]
283
+ def self.get_history_action(action)
284
+ HISTORY_ACTION[action.to_i]
289
285
  end
290
286
 
291
287
  # Class constructor
292
288
  def initialize(xml, client)
293
289
  LockableExt.make_lockable(self, VM_METHODS)
294
290
 
295
- super(xml,client)
291
+ super(xml, client)
296
292
  end
297
293
 
298
294
  #######################################################################
@@ -304,7 +300,7 @@ module OpenNebula
304
300
  super(VM_METHODS[:info], 'VM', decrypt)
305
301
  end
306
302
 
307
- alias_method :info!, :info
303
+ alias info! info
308
304
 
309
305
  # Allocates a new VirtualMachine in OpenNebula
310
306
  #
@@ -315,7 +311,7 @@ module OpenNebula
315
311
  #
316
312
  # @return [nil, OpenNebula::Error] nil in case of success, Error
317
313
  # otherwise
318
- def allocate(description, hold=false)
314
+ def allocate(description, hold = false)
319
315
  super(VM_METHODS[:allocate], description, hold)
320
316
  end
321
317
 
@@ -327,7 +323,7 @@ module OpenNebula
327
323
  #
328
324
  # @return [nil, OpenNebula::Error] nil in case of success, Error
329
325
  # otherwise
330
- def update(new_template=nil, append=false)
326
+ def update(new_template = nil, append = false)
331
327
  super(VM_METHODS[:update], new_template, append ? 1 : 0)
332
328
  end
333
329
 
@@ -336,7 +332,7 @@ module OpenNebula
336
332
  # @param indent [true,false] indents the resulting string, defaults to true
337
333
  #
338
334
  # @return [String] The USER_TEMPLATE
339
- def user_template_str(indent=true)
335
+ def user_template_str(indent = true)
340
336
  template_like_str('USER_TEMPLATE', indent)
341
337
  end
342
338
 
@@ -352,7 +348,7 @@ module OpenNebula
352
348
  end
353
349
 
354
350
  def replace(opts = {})
355
- super(opts, "USER_TEMPLATE")
351
+ super(opts, 'USER_TEMPLATE')
356
352
  end
357
353
 
358
354
  # Initiates the instance of the VM on the target host.
@@ -367,40 +363,40 @@ module OpenNebula
367
363
  #
368
364
  # @return [nil, OpenNebula::Error] nil in case of success, Error
369
365
  # otherwise
370
- def deploy(host_id, enforce=false, ds_id=-1, extra_template="")
366
+ def deploy(host_id, enforce = false, ds_id = -1, extra_template = '')
371
367
  enforce ||= false
372
368
  ds_id ||= -1
373
- extra_template ||= ""
369
+ extra_template ||= ''
374
370
 
375
- self.info
371
+ info
376
372
 
377
- return call(VM_METHODS[:deploy],
378
- @pe_id,
379
- host_id.to_i,
380
- enforce,
381
- ds_id.to_i,
382
- extra_template)
373
+ call(VM_METHODS[:deploy],
374
+ @pe_id,
375
+ host_id.to_i,
376
+ enforce,
377
+ ds_id.to_i,
378
+ extra_template)
383
379
  end
384
380
 
385
381
  # Shutdowns an already deployed VM
386
- def terminate(hard=false)
382
+ def terminate(hard = false)
387
383
  action(hard ? 'terminate-hard' : 'terminate')
388
384
  end
389
385
 
390
- alias_method :shutdown, :terminate
386
+ alias shutdown terminate
391
387
 
392
388
  # Shuts down an already deployed VM, saving its state in the system DS
393
- def undeploy(hard=false)
389
+ def undeploy(hard = false)
394
390
  action(hard ? 'undeploy-hard' : 'undeploy')
395
391
  end
396
392
 
397
393
  # Powers off a running VM
398
- def poweroff(hard=false)
394
+ def poweroff(hard = false)
399
395
  action(hard ? 'poweroff-hard' : 'poweroff')
400
396
  end
401
397
 
402
398
  # Reboots an already deployed VM
403
- def reboot(hard=false)
399
+ def reboot(hard = false)
404
400
  action(hard ? 'reboot-hard' : 'reboot')
405
401
  end
406
402
 
@@ -435,10 +431,10 @@ module OpenNebula
435
431
  # @return [nil, OpenNebula::Error] nil in case of success, Error
436
432
  # otherwise
437
433
  def disk_attach(disk_template)
438
- return call(VM_METHODS[:attach], @pe_id, disk_template)
434
+ call(VM_METHODS[:attach], @pe_id, disk_template)
439
435
  end
440
436
 
441
- alias_method :attachdisk, :disk_attach
437
+ alias attachdisk disk_attach
442
438
 
443
439
  # Detaches a disk from a running VM
444
440
  #
@@ -446,10 +442,10 @@ module OpenNebula
446
442
  # @return [nil, OpenNebula::Error] nil in case of success, Error
447
443
  # otherwise
448
444
  def disk_detach(disk_id)
449
- return call(VM_METHODS[:detach], @pe_id, disk_id)
445
+ call(VM_METHODS[:detach], @pe_id, disk_id)
450
446
  end
451
447
 
452
- alias_method :detachdisk, :disk_detach
448
+ alias detachdisk disk_detach
453
449
 
454
450
  # Attaches a NIC to a running VM
455
451
  #
@@ -457,7 +453,7 @@ module OpenNebula
457
453
  # @return [nil, OpenNebula::Error] nil in case of success, Error
458
454
  # otherwise
459
455
  def nic_attach(nic_template)
460
- return call(VM_METHODS[:attachnic], @pe_id, nic_template)
456
+ call(VM_METHODS[:attachnic], @pe_id, nic_template)
461
457
  end
462
458
 
463
459
  # Detaches a NIC from a running VM
@@ -466,7 +462,7 @@ module OpenNebula
466
462
  # @return [nil, OpenNebula::Error] nil in case of success, Error
467
463
  # otherwise
468
464
  def nic_detach(nic_id)
469
- return call(VM_METHODS[:detachnic], @pe_id, nic_id)
465
+ call(VM_METHODS[:detachnic], @pe_id, nic_id)
470
466
  end
471
467
 
472
468
  # Updates a NIC for a running VM
@@ -478,7 +474,7 @@ module OpenNebula
478
474
  # @return [nil, OpenNebula::Error] nil in case of success, Error
479
475
  # otherwise
480
476
  def nic_update(nic_id, nic_template, append = false)
481
- return call(VM_METHODS[:updatenic], @pe_id, nic_id, nic_template, append ? 1 : 0)
477
+ call(VM_METHODS[:updatenic], @pe_id, nic_id, nic_template, append ? 1 : 0)
482
478
  end
483
479
 
484
480
  # Attaches a Security Groupt to a running VM
@@ -488,7 +484,7 @@ module OpenNebula
488
484
  # @return [nil, OpenNebula::Error] nil in case of success, Error
489
485
  # otherwise
490
486
  def sg_attach(nic_id, sg_id)
491
- return call(VM_METHODS[:attachsg], @pe_id, nic_id, sg_id)
487
+ call(VM_METHODS[:attachsg], @pe_id, nic_id, sg_id)
492
488
  end
493
489
 
494
490
  # Detaches a Security Group from a running VM
@@ -497,7 +493,7 @@ module OpenNebula
497
493
  # @return [nil, OpenNebula::Error] nil in case of success, Error
498
494
  # otherwise
499
495
  def sg_detach(nic_id, sg_id)
500
- return call(VM_METHODS[:detachsg], @pe_id, nic_id, sg_id)
496
+ call(VM_METHODS[:detachsg], @pe_id, nic_id, sg_id)
501
497
  end
502
498
 
503
499
  # Sets the re-scheduling flag for the VM
@@ -529,13 +525,13 @@ module OpenNebula
529
525
  #
530
526
  # @return [nil, OpenNebula::Error] nil in case of success, Error
531
527
  # otherwise
532
- def migrate(host_id, live=false, enforce=false, ds_id=-1, mtype=0)
528
+ def migrate(host_id, live = false, enforce = false, ds_id = -1, mtype = 0)
533
529
  call(VM_METHODS[:migrate], @pe_id, host_id.to_i, live==true,
534
- enforce, ds_id.to_i, mtype)
530
+ enforce, ds_id.to_i, mtype)
535
531
  end
536
532
 
537
533
  # @deprecated use {#migrate} instead
538
- def live_migrate(host_id, enforce=false)
534
+ def live_migrate(host_id, enforce = false)
539
535
  migrate(host_id, true, enforce)
540
536
  end
541
537
 
@@ -551,16 +547,15 @@ module OpenNebula
551
547
  #
552
548
  # @return [Integer, OpenNebula::Error] the new Image ID in case of
553
549
  # success, error otherwise
554
- def disk_saveas(disk_id, image_name, image_type="", snap_id=-1)
555
- return Error.new('ID not defined') if !@pe_id
550
+ def disk_saveas(disk_id, image_name, image_type = '', snap_id = -1)
551
+ return Error.new('ID not defined') unless @pe_id
556
552
 
557
- rc = @client.call(VM_METHODS[:disksaveas],
558
- @pe_id,
559
- disk_id,
560
- image_name,
561
- image_type,
562
- snap_id)
563
- return rc
553
+ @client.call(VM_METHODS[:disksaveas],
554
+ @pe_id,
555
+ disk_id,
556
+ image_name,
557
+ image_type,
558
+ snap_id)
564
559
  end
565
560
 
566
561
  # Resize the VM
@@ -575,7 +570,7 @@ module OpenNebula
575
570
  # @return [nil, OpenNebula::Error] nil in case of success, Error
576
571
  # otherwise
577
572
  def resize(capacity_template, enforce)
578
- return call(VM_METHODS[:resize], @pe_id, capacity_template, enforce)
573
+ call(VM_METHODS[:resize], @pe_id, capacity_template, enforce)
579
574
  end
580
575
 
581
576
  # Changes the owner/group
@@ -601,7 +596,7 @@ module OpenNebula
601
596
  # @return [nil, OpenNebula::Error] nil in case of success, Error
602
597
  # otherwise
603
598
  def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u,
604
- other_m, other_a)
599
+ other_m, other_a)
605
600
  super(VM_METHODS[:chmod], owner_u, owner_m, owner_a, group_u,
606
601
  group_m, group_a, other_u, other_m, other_a)
607
602
  end
@@ -624,16 +619,16 @@ module OpenNebula
624
619
  # }
625
620
  #
626
621
  def monitoring(xpath_expressions)
627
- return super(VM_METHODS[:monitoring], xpath_expressions)
622
+ super(VM_METHODS[:monitoring], xpath_expressions)
628
623
  end
629
624
 
630
625
  # Retrieves this VM's monitoring data from OpenNebula, in XML
631
626
  #
632
627
  # @return [String] VM monitoring data, in XML
633
- def monitoring_xml()
634
- return Error.new('ID not defined') if !@pe_id
628
+ def monitoring_xml
629
+ return Error.new('ID not defined') unless @pe_id
635
630
 
636
- return @client.call(VM_METHODS[:monitoring], @pe_id)
631
+ @client.call(VM_METHODS[:monitoring], @pe_id)
637
632
  end
638
633
 
639
634
  # Renames this VM
@@ -643,7 +638,7 @@ module OpenNebula
643
638
  # @return [nil, OpenNebula::Error] nil in case of success, Error
644
639
  # otherwise
645
640
  def rename(name)
646
- return call(VM_METHODS[:rename], @pe_id, name)
641
+ call(VM_METHODS[:rename], @pe_id, name)
647
642
  end
648
643
 
649
644
  # Creates a new VM snapshot
@@ -652,11 +647,11 @@ module OpenNebula
652
647
  #
653
648
  # @return [Integer, OpenNebula::Error] The new snaphost ID in case
654
649
  # of success, Error otherwise
655
- def snapshot_create(name="")
656
- return Error.new('ID not defined') if !@pe_id
650
+ def snapshot_create(name = '')
651
+ return Error.new('ID not defined') unless @pe_id
657
652
 
658
- name ||= ""
659
- return @client.call(VM_METHODS[:snapshotcreate], @pe_id, name)
653
+ name ||= ''
654
+ @client.call(VM_METHODS[:snapshotcreate], @pe_id, name)
660
655
  end
661
656
 
662
657
  # Reverts to a snapshot
@@ -666,7 +661,7 @@ module OpenNebula
666
661
  # @return [nil, OpenNebula::Error] nil in case of success, Error
667
662
  # otherwise
668
663
  def snapshot_revert(snap_id)
669
- return call(VM_METHODS[:snapshotrevert], @pe_id, snap_id)
664
+ call(VM_METHODS[:snapshotrevert], @pe_id, snap_id)
670
665
  end
671
666
 
672
667
  # Deletes a VM snapshot
@@ -676,7 +671,7 @@ module OpenNebula
676
671
  # @return [nil, OpenNebula::Error] nil in case of success, Error
677
672
  # otherwise
678
673
  def snapshot_delete(snap_id)
679
- return call(VM_METHODS[:snapshotdelete], @pe_id, snap_id)
674
+ call(VM_METHODS[:snapshotdelete], @pe_id, snap_id)
680
675
  end
681
676
 
682
677
  # Takes a new snapshot of a disk
@@ -686,7 +681,7 @@ module OpenNebula
686
681
  #
687
682
  # @return [Integer, OpenNebula::Error] The new snapshot ID or error
688
683
  def disk_snapshot_create(disk_id, name)
689
- return call(VM_METHODS[:disksnapshotcreate], @pe_id, disk_id, name)
684
+ call(VM_METHODS[:disksnapshotcreate], @pe_id, disk_id, name)
690
685
  end
691
686
 
692
687
  # Reverts disk state to a previously taken snapshot
@@ -697,7 +692,7 @@ module OpenNebula
697
692
  # @return [nil, OpenNebula::Error] nil in case of success, Error
698
693
  # otherwise
699
694
  def disk_snapshot_revert(disk_id, snap_id)
700
- return call(VM_METHODS[:disksnapshotrevert], @pe_id, disk_id, snap_id)
695
+ call(VM_METHODS[:disksnapshotrevert], @pe_id, disk_id, snap_id)
701
696
  end
702
697
 
703
698
  # Deletes a disk snapshot
@@ -708,7 +703,7 @@ module OpenNebula
708
703
  # @return [nil, OpenNebula::Error] nil in case of success, Error
709
704
  # otherwise
710
705
  def disk_snapshot_delete(disk_id, snap_id)
711
- return call(VM_METHODS[:disksnapshotdelete], @pe_id, disk_id, snap_id)
706
+ call(VM_METHODS[:disksnapshotdelete], @pe_id, disk_id, snap_id)
712
707
  end
713
708
 
714
709
  # Renames a disk snapshot
@@ -720,7 +715,7 @@ module OpenNebula
720
715
  # @return [nil, OpenNebula::Error] nil in case of success, Error
721
716
  # otherwise
722
717
  def disk_snapshot_rename(disk_id, snap_id, new_name)
723
- return call(VM_METHODS[:disksnapshotrename], @pe_id, disk_id, snap_id, new_name)
718
+ call(VM_METHODS[:disksnapshotrename], @pe_id, disk_id, snap_id, new_name)
724
719
  end
725
720
 
726
721
  # Changes the size of a disk
@@ -730,7 +725,7 @@ module OpenNebula
730
725
  #
731
726
  # @return [nil, OpenNebula::Error] nil in case of success or error
732
727
  def disk_resize(disk_id, size)
733
- return call(VM_METHODS[:diskresize], @pe_id, disk_id, size.to_s)
728
+ call(VM_METHODS[:diskresize], @pe_id, disk_id, size.to_s)
734
729
  end
735
730
 
736
731
  # Recovers an ACTIVE VM
@@ -741,11 +736,11 @@ module OpenNebula
741
736
  # @return [nil, OpenNebula::Error] nil in case of success, Error
742
737
  # otherwise
743
738
  def recover(result)
744
- return call(VM_METHODS[:recover], @pe_id, result)
739
+ call(VM_METHODS[:recover], @pe_id, result)
745
740
  end
746
741
 
747
742
  # Deletes a VM from the pool
748
- def delete(recreate=false)
743
+ def delete(recreate = false)
749
744
  if recreate
750
745
  recover(4)
751
746
  else
@@ -766,7 +761,7 @@ module OpenNebula
766
761
  # @return [nil, OpenNebula::Error] nil in case of success, Error
767
762
  # otherwise
768
763
  def updateconf(new_conf, append = false)
769
- return call(VM_METHODS[:updateconf], @pe_id, new_conf, append ? 1 : 0)
764
+ call(VM_METHODS[:updateconf], @pe_id, new_conf, append ? 1 : 0)
770
765
  end
771
766
 
772
767
  # Add sched actions
@@ -775,7 +770,7 @@ module OpenNebula
775
770
  # @return [nil, OpenNebula::Error] nil in case of success, Error
776
771
  # otherwise
777
772
  def sched_action_add(sched_template)
778
- return call(VM_METHODS[:schedadd], @pe_id, sched_template)
773
+ call(VM_METHODS[:schedadd], @pe_id, sched_template)
779
774
  end
780
775
 
781
776
  # Delete sched action
@@ -784,7 +779,7 @@ module OpenNebula
784
779
  # @return [nil, OpenNebula::Error] nil in case of success, Error
785
780
  # otherwise
786
781
  def sched_action_delete(sched_id)
787
- return call(VM_METHODS[:scheddelete], @pe_id, sched_id.to_i)
782
+ call(VM_METHODS[:scheddelete], @pe_id, sched_id.to_i)
788
783
  end
789
784
 
790
785
  # Update sched_action
@@ -794,8 +789,8 @@ module OpenNebula
794
789
  # @return [nil, OpenNebula::Error] nil in case of success, Error
795
790
  # otherwise
796
791
  def sched_action_update(sched_id, sched_template)
797
- return call(VM_METHODS[:schedupdate], @pe_id, sched_id.to_i,
798
- sched_template)
792
+ call(VM_METHODS[:schedupdate], @pe_id, sched_id.to_i,
793
+ sched_template)
799
794
  end
800
795
 
801
796
  # Generate a backup for the VM (backup config must be set)
@@ -804,7 +799,15 @@ module OpenNebula
804
799
  # @return [Integer, OpenNebula::Error] ID of the resulting BACKUP image
805
800
  # in case of success, Error otherwise.
806
801
  def backup(ds_id = -1, reset = false)
807
- return @client.call(VM_METHODS[:backup], @pe_id, ds_id, reset)
802
+ @client.call(VM_METHODS[:backup], @pe_id, ds_id, reset)
803
+ end
804
+
805
+ # Cancel ongoing backup operation for the VM
806
+ #
807
+ # @return [nil, OpenNebula::Error] nil in case of sucess, Error
808
+ # otherwise.
809
+ def backup_cancel
810
+ @client.call(VM_METHODS[:backupcancel], @pe_id)
808
811
  end
809
812
 
810
813
  ########################################################################
@@ -835,7 +838,7 @@ module OpenNebula
835
838
  def status
836
839
  short_state_str=SHORT_VM_STATES[state_str]
837
840
 
838
- if short_state_str=="actv"
841
+ if short_state_str=='actv'
839
842
  short_state_str=SHORT_LCM_STATES[lcm_state_str]
840
843
  end
841
844
 
@@ -857,7 +860,7 @@ module OpenNebula
857
860
  retrieve_xmlelements('//HISTORY')[seq].to_xml
858
861
  end
859
862
 
860
- def wait_state(state, timeout=120)
863
+ def wait_state(state, timeout = 120)
861
864
  require 'opennebula/wait_ext'
862
865
 
863
866
  extend OpenNebula::WaitExt
@@ -869,7 +872,7 @@ module OpenNebula
869
872
  true
870
873
  end
871
874
 
872
- def wait_state2(state, lcm_state, timeout=120)
875
+ def wait_state2(state, lcm_state, timeout = 120)
873
876
  extend OpenNebula::WaitExt
874
877
 
875
878
  rc = wait2(state, lcm_state, timeout)
@@ -879,26 +882,27 @@ module OpenNebula
879
882
  true
880
883
  end
881
884
 
882
- private
885
+ private
886
+
883
887
  def action(name)
884
- return Error.new('ID not defined') if !@pe_id
888
+ return Error.new('ID not defined') unless @pe_id
885
889
 
886
890
  rc = @client.call(VM_METHODS[:action], name, @pe_id)
887
- rc = nil if !OpenNebula.is_error?(rc)
891
+ rc = nil unless OpenNebula.is_error?(rc)
888
892
 
889
- return rc
893
+ rc
890
894
  end
891
895
 
892
- def wait_lcm_state(state, timeout=10)
893
- vm_state = ""
894
- lcm_state = ""
896
+ def wait_lcm_state(state, timeout = 10)
897
+ vm_state = ''
898
+ lcm_state = ''
895
899
 
896
900
  timeout.times do
897
- rc = info()
901
+ rc = info
898
902
  return rc if OpenNebula.is_error?(rc)
899
903
 
900
- vm_state = state_str()
901
- lcm_state = lcm_state_str()
904
+ vm_state = state_str
905
+ lcm_state = lcm_state_str
902
906
 
903
907
  if lcm_state == state
904
908
  return true
@@ -907,8 +911,10 @@ module OpenNebula
907
911
  sleep 1
908
912
  end
909
913
 
910
- return Error.new("Timeout expired for state #{state}. "<<
914
+ Error.new("Timeout expired for state #{state}. "<<
911
915
  "VM is in state #{vm_state}, #{lcm_state}")
912
916
  end
917
+
913
918
  end
919
+
914
920
  end