opennebula 3.9.80.beta → 3.9.90.rc

Sign up to get free protection for your applications and to get access to all the features.
data/lib/opennebula.rb CHANGED
@@ -54,5 +54,5 @@ require 'opennebula/system'
54
54
  module OpenNebula
55
55
 
56
56
  # OpenNebula version
57
- VERSION = '3.9.80'
57
+ VERSION = '3.9.90'
58
58
  end
@@ -28,7 +28,8 @@ class OpenNebula::LdapAuth
28
28
  :password => nil,
29
29
  :base => nil,
30
30
  :auth_method => :simple,
31
- :user_field => 'cn'
31
+ :user_field => 'cn',
32
+ :group_field => 'member'
32
33
  }.merge(options)
33
34
 
34
35
  ops={}
@@ -71,7 +72,8 @@ class OpenNebula::LdapAuth
71
72
  end
72
73
 
73
74
  def is_in_group?(user, group)
74
- result=@ldap.search(:base => group, :filter => "(member=#{user})")
75
+ result=@ldap.search(:base => group,
76
+ :filter => "(#{@options[:group_field]}=#{user})")
75
77
 
76
78
  if result && result.first
77
79
  true
@@ -266,4 +266,29 @@ module OpenNebula
266
266
 
267
267
  return hash
268
268
  end
269
+
270
+
271
+ # Alternative method with better performance for huge number of timestamps.
272
+ # For reasonable amounts of data, the current method is quicker
273
+ =begin
274
+ def self.process_monitoring(xmldoc, root_elem, timestamp_elem, oid, xpath_expressions)
275
+ hash = {}
276
+
277
+ xpath_expressions.each { |xpath|
278
+ hash[xpath] = []
279
+ }
280
+
281
+ xmldoc.each("#{root_elem}[ID=#{oid}]") do |elem|
282
+ timestamp = elem[timestamp_elem]
283
+
284
+ xpath_expressions.each { |xpath|
285
+ xpath_value = elem[xpath]
286
+
287
+ hash[xpath] << [timestamp, xpath_value] if !xpath_value.nil?
288
+ }
289
+ end
290
+
291
+ return hash
292
+ end
293
+ =end
269
294
  end
@@ -47,14 +47,15 @@ module OpenNebula
47
47
  }
48
48
 
49
49
  VM_STATE=%w{INIT PENDING HOLD ACTIVE STOPPED SUSPENDED DONE FAILED
50
- POWEROFF}
50
+ POWEROFF UNDEPLOYED}
51
51
 
52
52
  LCM_STATE=%w{LCM_INIT PROLOG BOOT RUNNING MIGRATE SAVE_STOP SAVE_SUSPEND
53
53
  SAVE_MIGRATE PROLOG_MIGRATE PROLOG_RESUME EPILOG_STOP EPILOG
54
54
  SHUTDOWN CANCEL FAILURE CLEANUP_RESUBMIT UNKNOWN HOTPLUG SHUTDOWN_POWEROFF
55
55
  BOOT_UNKNOWN BOOT_POWEROFF BOOT_SUSPENDED BOOT_STOPPED CLEANUP_DELETE
56
56
  HOTPLUG_SNAPSHOT HOTPLUG_NIC HOTPLUG_SAVEAS HOTPLUG_SAVEAS_POWEROFF
57
- HOTPLUG_SAVEAS_SUSPENDED}
57
+ HOTPLUG_SAVEAS_SUSPENDED SHUTDOWN_UNDEPLOY EPILOG_UNDEPLOY
58
+ PROLOG_UNDEPLOY BOOT_UNDEPLOY}
58
59
 
59
60
  SHORT_VM_STATES={
60
61
  "INIT" => "init",
@@ -65,7 +66,8 @@ module OpenNebula
65
66
  "SUSPENDED" => "susp",
66
67
  "DONE" => "done",
67
68
  "FAILED" => "fail",
68
- "POWEROFF" => "poff"
69
+ "POWEROFF" => "poff",
70
+ "UNDEPLOYED"=> "unde"
69
71
  }
70
72
 
71
73
  SHORT_LCM_STATES={
@@ -96,19 +98,26 @@ module OpenNebula
96
98
  "HOTPLUG_NIC" => "hotp",
97
99
  "HOTPLUG_SAVEAS" => "hotp",
98
100
  "HOTPLUG_SAVEAS_POWEROFF" => "hotp",
99
- "HOTPLUG_SAVEAS_SUSPENDED" => "hotp"
101
+ "HOTPLUG_SAVEAS_SUSPENDED" => "hotp",
102
+ "SHUTDOWN_UNDEPLOY" => "shut",
103
+ "EPILOG_UNDEPLOY" => "epil",
104
+ "PROLOG_UNDEPLOY" => "prol",
105
+ "BOOT_UNDEPLOY" => "boot"
100
106
  }
101
107
 
102
- MIGRATE_REASON=%w{NONE ERROR STOP_RESUME USER CANCEL}
108
+ MIGRATE_REASON=%w{NONE ERROR USER}
103
109
 
104
110
  SHORT_MIGRATE_REASON={
105
111
  "NONE" => "none",
106
112
  "ERROR" => "erro",
107
- "STOP_RESUME" => "stop",
108
- "USER" => "user",
109
- "CANCEL" => "canc"
113
+ "USER" => "user"
110
114
  }
111
115
 
116
+ HISTORY_ACTION=%w{none migrate live-migrate shutdown shutdown-hard
117
+ undeploy undeploy-hard hold release stop suspend resume boot delete
118
+ delete-recreate reboot reboot-hard resched unresched poweroff
119
+ poweroff-hard}
120
+
112
121
  # Creates a VirtualMachine description with just its identifier
113
122
  # this method should be used to create plain VirtualMachine objects.
114
123
  # +id+ the id of the vm
@@ -133,6 +142,10 @@ module OpenNebula
133
142
  reason_str
134
143
  end
135
144
 
145
+ def VirtualMachine.get_history_action(action)
146
+ return HISTORY_ACTION[action.to_i]
147
+ end
148
+
136
149
  # Class constructor
137
150
  def initialize(xml, client)
138
151
  super(xml,client)
@@ -210,9 +223,14 @@ module OpenNebula
210
223
  action(hard ? 'shutdown-hard' : 'shutdown')
211
224
  end
212
225
 
226
+ # Shuts down an already deployed VM, saving its state in the system DS
227
+ def undeploy(hard=false)
228
+ action(hard ? 'undeploy-hard' : 'undeploy')
229
+ end
230
+
213
231
  # Powers off a running VM
214
- def poweroff
215
- action('poweroff')
232
+ def poweroff(hard=false)
233
+ action(hard ? 'poweroff-hard' : 'poweroff')
216
234
  end
217
235
 
218
236
  # Reboots an already deployed VM
@@ -296,17 +314,17 @@ module OpenNebula
296
314
  end
297
315
 
298
316
  # Deletes a VM from the pool
299
- def destroy(recreate=false)
317
+ def delete(recreate=false)
300
318
  if recreate
301
- action('destroy-recreate')
319
+ action('delete-recreate')
302
320
  else
303
- action('destroy')
321
+ action('delete')
304
322
  end
305
323
  end
306
324
 
307
- # @deprecated use {#destroy} instead
325
+ # @deprecated use {#delete} instead
308
326
  def finalize(recreate=false)
309
- destroy(recreate)
327
+ delete(recreate)
310
328
  end
311
329
 
312
330
  # Forces a re-deployment of a VM in UNKNOWN or BOOT state
@@ -316,9 +334,9 @@ module OpenNebula
316
334
 
317
335
  alias_method :restart, :boot
318
336
 
319
- # @deprecated use {#destroy} instead
337
+ # @deprecated use {#delete} instead
320
338
  def resubmit
321
- action('destroy-recreate')
339
+ action('delete-recreate')
322
340
  end
323
341
 
324
342
  # Sets the re-scheduling flag for the VM
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opennebula
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.80.beta
4
+ version: 3.9.90.rc
5
5
  prerelease: 7
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-26 00:00:00.000000000 Z
12
+ date: 2013-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri