opennebula 6.6.2 → 6.6.3

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