bosh_vsphere_cpi 0.6.0 → 1.5.0.pre.1100

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/bin/vsphere_cpi_console +35 -0
  2. data/db/migrations/20120123235022_initial.rb +5 -0
  3. data/lib/cloud/vsphere/client.rb +4 -5
  4. data/lib/cloud/vsphere/cloud.rb +245 -226
  5. data/lib/cloud/vsphere/config.rb +0 -4
  6. data/lib/cloud/vsphere/models/disk.rb +3 -0
  7. data/lib/cloud/vsphere/path_finder.rb +12 -0
  8. data/lib/cloud/vsphere/resources.rb +0 -2
  9. data/lib/cloud/vsphere/version.rb +1 -1
  10. data/lib/cloud/vsphere.rb +5 -3
  11. data/lib/ruby_vim_sdk/base_type.rb +15 -0
  12. data/lib/ruby_vim_sdk/const.rb +32 -0
  13. data/lib/ruby_vim_sdk/core_types.rb +68 -0
  14. data/lib/ruby_vim_sdk/data_type.rb +14 -0
  15. data/lib/ruby_vim_sdk/enum_type.rb +12 -0
  16. data/lib/ruby_vim_sdk/ext.rb +9 -0
  17. data/lib/ruby_vim_sdk/managed_type.rb +12 -0
  18. data/lib/ruby_vim_sdk/method.rb +37 -0
  19. data/lib/ruby_vim_sdk/missing_types.rb +11 -0
  20. data/lib/ruby_vim_sdk/property.rb +49 -0
  21. data/lib/ruby_vim_sdk/server_objects.rb +2718 -0
  22. data/lib/ruby_vim_sdk/soap/deserializer.rb +301 -0
  23. data/lib/ruby_vim_sdk/soap/serializer.rb +225 -0
  24. data/lib/ruby_vim_sdk/soap/stub_adapter.rb +123 -0
  25. data/lib/ruby_vim_sdk/soap_exception.rb +12 -0
  26. data/lib/ruby_vim_sdk/typed_array.rb +9 -0
  27. data/lib/ruby_vim_sdk/types.rb +22 -0
  28. data/lib/ruby_vim_sdk/version.rb +5 -0
  29. data/lib/ruby_vim_sdk/vmodl/data_object.rb +102 -0
  30. data/lib/ruby_vim_sdk/vmodl/managed_object.rb +78 -0
  31. data/lib/ruby_vim_sdk/vmodl/method_name.rb +7 -0
  32. data/lib/ruby_vim_sdk/vmodl/property_path.rb +7 -0
  33. data/lib/ruby_vim_sdk/vmodl/type_name.rb +7 -0
  34. data/lib/ruby_vim_sdk/vmodl_helper.rb +33 -0
  35. data/lib/ruby_vim_sdk/vmomi_support.rb +280 -0
  36. data/lib/ruby_vim_sdk.rb +45 -0
  37. metadata +65 -53
  38. data/Rakefile +0 -50
  39. data/spec/spec_helper.rb +0 -33
  40. data/spec/unit/cloud/vsphere/resources/cluster_spec.rb +0 -383
  41. data/spec/unit/cloud/vsphere/resources/datacenter_spec.rb +0 -72
  42. data/spec/unit/cloud/vsphere/resources/datastore_spec.rb +0 -43
  43. data/spec/unit/cloud/vsphere/resources/folder_spec.rb +0 -63
  44. data/spec/unit/cloud/vsphere/resources/resource_pool_spec.rb +0 -42
  45. data/spec/unit/cloud/vsphere/resources/scorer_spec.rb +0 -73
  46. data/spec/unit/cloud/vsphere/resources/util_spec.rb +0 -35
  47. data/spec/unit/cloud/vsphere/resources_spec.rb +0 -216
@@ -61,10 +61,6 @@ module VSphereCloud
61
61
  @password = config["password"]
62
62
  @datacenters = {}
63
63
 
64
- # TODO: current limitation to support a single vDC.
65
- # Primarily due to stemcell replication logic calling CloneVM_Task which
66
- # does not copy across datacenters. Should use CopyDatastoreFile_Task /
67
- # CopyVirtualDisk_Task.
68
64
  unless config["datacenters"].size == 1
69
65
  raise "vSphere CPI only supports a single datacenter."
70
66
  end
@@ -1,3 +1,6 @@
1
+ # provides validates_*
2
+ Sequel::Model.plugin :validation_helpers
3
+
1
4
  module VSphereCloud::Models
2
5
  class Disk < Sequel::Model(Bosh::Clouds::Config.db[:vsphere_disk])
3
6
  def validate
@@ -0,0 +1,12 @@
1
+ module VSphereCloud
2
+ class PathFinder
3
+ def path(managed_object)
4
+ path_objects = []
5
+ until managed_object.parent.instance_of?(VimSdk::Vim::Datacenter)
6
+ path_objects.unshift(managed_object.name)
7
+ managed_object = managed_object.parent
8
+ end
9
+ path_objects.join('/')
10
+ end
11
+ end
12
+ end
@@ -52,8 +52,6 @@ module VSphereCloud
52
52
  # persistent pool.
53
53
  def validate_persistent_datastore(dc_name, datastore_name)
54
54
  datacenter = datacenters[dc_name]
55
- # TODO: should actually check vCenter since we can move disks across
56
- # datacenters.
57
55
  if datacenter.nil?
58
56
  raise "Invalid datacenter #{dc_name} #{datacenters.inspect}"
59
57
  end
@@ -1,7 +1,7 @@
1
1
  module Bosh
2
2
  module Clouds
3
3
  class VSphere
4
- VERSION = "0.6.0"
4
+ VERSION = '1.5.0.pre.1100'
5
5
  end
6
6
  end
7
7
  end
data/lib/cloud/vsphere.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "common/thread_pool"
2
2
  require "common/thread_formatter"
3
- require "uuidtools"
3
+ require "securerandom"
4
4
 
5
5
  autoload :VSphereCloud, "cloud/vsphere/cloud"
6
6
 
@@ -12,12 +12,14 @@ module Bosh
12
12
 
13
13
  def_delegators :@delegate,
14
14
  :create_stemcell, :delete_stemcell,
15
- :create_vm, :delete_vm, :reboot_vm,
15
+ :create_vm, :delete_vm, :reboot_vm, :has_vm?,
16
16
  :set_vm_metadata,
17
17
  :configure_networks,
18
18
  :create_disk, :delete_disk,
19
19
  :attach_disk, :detach_disk,
20
- :validate_deployment
20
+ :validate_deployment,
21
+ :snapshot_disk, :delete_snapshot,
22
+ :current_vm_id, :get_disks
21
23
 
22
24
  def initialize(options)
23
25
  @delegate = VSphereCloud::Cloud.new(options)
@@ -0,0 +1,15 @@
1
+ module VimSdk
2
+
3
+ class BaseType
4
+ attr_accessor :name
5
+ attr_accessor :wsdl_name
6
+ attr_accessor :version
7
+
8
+ def initialize(name, wsdl_name, version)
9
+ @name = VmodlHelper.vmodl_type_to_ruby(name)
10
+ @wsdl_name = wsdl_name
11
+ @version = version
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,32 @@
1
+ module VimSdk
2
+ BASE_VERSION = "vmodl.version.version0"
3
+ VERSION1 = "vmodl.version.version1"
4
+
5
+ XMLNS_XSD = "http://www.w3.org/2001/XMLSchema"
6
+ XMLNS_XSI = "http://www.w3.org/2001/XMLSchema-instance"
7
+ XMLNS_VMODL_BASE = "urn:vim25"
8
+
9
+ XML_ENCODING = "UTF-8"
10
+ XML_HEADER = "<?xml version=\"1.0\" encoding=\"#{XML_ENCODING}\"?>"
11
+
12
+ XMLNS_SOAPENC = "http://schemas.xmlsoap.org/soap/encoding/"
13
+ XMLNS_SOAPENV = "http://schemas.xmlsoap.org/soap/envelope/"
14
+
15
+ SOAP_NAMESPACE_MAP = { XMLNS_SOAPENC => 'soapenc',
16
+ XMLNS_SOAPENV => 'soapenv',
17
+ XMLNS_XSI => 'xsi',
18
+ XMLNS_XSD => 'xsd'}
19
+
20
+ SOAP_ENVELOPE_TAG="#{SOAP_NAMESPACE_MAP[XMLNS_SOAPENV]}:Envelope"
21
+ SOAP_HEADER_TAG="#{SOAP_NAMESPACE_MAP[XMLNS_SOAPENV]}:Header"
22
+ SOAP_FAULT_TAG="#{SOAP_NAMESPACE_MAP[XMLNS_SOAPENV]}:Fault"
23
+ SOAP_BODY_TAG="#{SOAP_NAMESPACE_MAP[XMLNS_SOAPENV]}:Body"
24
+ SOAP_ENVELOPE_START = "<#{SOAP_ENVELOPE_TAG} #{SOAP_NAMESPACE_MAP.collect { |namespace, prefix| "xmlns:#{prefix}=\"#{namespace}\"" }.join(" ")}>\n"
25
+ SOAP_ENVELOPE_END = "\n</#{SOAP_ENVELOPE_TAG}>"
26
+ SOAP_HEADER_START="<#{SOAP_HEADER_TAG}>"
27
+ SOAP_HEADER_END="</#{SOAP_HEADER_TAG}>"
28
+ SOAP_BODY_START="<#{SOAP_BODY_TAG}>"
29
+ SOAP_BODY_END="</#{SOAP_BODY_TAG}>"
30
+ SOAP_START = "#{SOAP_ENVELOPE_START}#{SOAP_BODY_START}\n"
31
+ SOAP_END = "\n#{SOAP_BODY_END}#{SOAP_ENVELOPE_END}"
32
+ end
@@ -0,0 +1,68 @@
1
+ # ******* WARNING - AUTO GENERATED CODE - DO NOT EDIT *******
2
+
3
+ module VimSdk
4
+ module VmomiSupport
5
+
6
+ add_version("vmodl.version.version0", "", "", false, "vim25")
7
+ add_version("vmodl.version.version1", "", "", false, "vim25")
8
+ add_version("vmodl.query.version.version1", "", "", false, "vim25")
9
+ add_version("vmodl.query.version.version2", "", "", false, "vim25")
10
+ add_version("vmodl.query.version.version3", "", "", false, "vim25")
11
+ add_version_parent("vmodl.version.version0", "vmodl.version.version0")
12
+ add_version_parent("vmodl.version.version1", "vmodl.version.version0")
13
+ add_version_parent("vmodl.version.version1", "vmodl.version.version1")
14
+ add_version_parent("vmodl.query.version.version1", "vmodl.version.version0")
15
+ add_version_parent("vmodl.query.version.version1", "vmodl.query.version.version1")
16
+ add_version_parent("vmodl.query.version.version2", "vmodl.version.version0")
17
+ add_version_parent("vmodl.query.version.version2", "vmodl.version.version1")
18
+ add_version_parent("vmodl.query.version.version2", "vmodl.query.version.version1")
19
+ add_version_parent("vmodl.query.version.version2", "vmodl.query.version.version2")
20
+ add_version_parent("vmodl.query.version.version3", "vmodl.version.version0")
21
+ add_version_parent("vmodl.query.version.version3", "vmodl.version.version1")
22
+ add_version_parent("vmodl.query.version.version3", "vmodl.query.version.version1")
23
+ add_version_parent("vmodl.query.version.version3", "vmodl.query.version.version2")
24
+ add_version_parent("vmodl.query.version.version3", "vmodl.query.version.version3")
25
+ create_data_type("vmodl.DynamicArray", "DynamicArray", "vmodl.DataObject", "vmodl.version.version0", [["dynamicType", "string", "vmodl.version.version0", {:optional => true}], ["val", "anyType[]", "vmodl.version.version0"]])
26
+ create_data_type("vmodl.DynamicData", "DynamicData", "vmodl.DataObject", "vmodl.version.version0", [["dynamicType", "string", "vmodl.version.version0", {:optional => true}], ["dynamicProperty", "vmodl.DynamicProperty[]", "vmodl.version.version0", {:optional => true}]])
27
+ create_data_type("vmodl.DynamicProperty", "DynamicProperty", "vmodl.DataObject", "vmodl.version.version0", [["name", "vmodl.PropertyPath", "vmodl.version.version0"], ["val", "anyType", "vmodl.version.version0"]])
28
+ create_data_type("vmodl.KeyAnyValue", "KeyAnyValue", "vmodl.DynamicData", "vmodl.version.version1", [["key", "string", "vmodl.version.version1"], ["value", "anyType", "vmodl.version.version1"]])
29
+ create_data_type("vmodl.LocalizableMessage", "LocalizableMessage", "vmodl.DynamicData", "vmodl.version.version1", [["key", "string", "vmodl.version.version1"], ["arg", "vmodl.KeyAnyValue[]", "vmodl.version.version1", {:optional => true}], ["message", "string", "vmodl.version.version1", {:optional => true}]])
30
+ create_data_type("vmodl.fault.HostCommunication", "HostCommunication", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
31
+ create_data_type("vmodl.fault.HostNotConnected", "HostNotConnected", "vmodl.fault.HostCommunication", "vmodl.version.version0", nil)
32
+ create_data_type("vmodl.fault.HostNotReachable", "HostNotReachable", "vmodl.fault.HostCommunication", "vmodl.version.version0", nil)
33
+ create_data_type("vmodl.fault.InvalidArgument", "InvalidArgument", "vmodl.RuntimeFault", "vmodl.version.version0", [["invalidProperty", "vmodl.PropertyPath", "vmodl.version.version0", {:optional => true}]])
34
+ create_data_type("vmodl.fault.InvalidRequest", "InvalidRequest", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
35
+ create_data_type("vmodl.fault.InvalidType", "InvalidType", "vmodl.fault.InvalidRequest", "vmodl.version.version0", [["argument", "vmodl.PropertyPath", "vmodl.version.version0", {:optional => true}]])
36
+ create_data_type("vmodl.fault.ManagedObjectNotFound", "ManagedObjectNotFound", "vmodl.RuntimeFault", "vmodl.version.version0", [["obj", "vmodl.ManagedObject", "vmodl.version.version0"]])
37
+ create_data_type("vmodl.fault.MethodNotFound", "MethodNotFound", "vmodl.fault.InvalidRequest", "vmodl.version.version0", [["receiver", "vmodl.ManagedObject", "vmodl.version.version0"], ["method", "string", "vmodl.version.version0"]])
38
+ create_data_type("vmodl.fault.NotEnoughLicenses", "NotEnoughLicenses", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
39
+ create_data_type("vmodl.fault.NotImplemented", "NotImplemented", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
40
+ create_data_type("vmodl.fault.NotSupported", "NotSupported", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
41
+ create_data_type("vmodl.fault.RequestCanceled", "RequestCanceled", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
42
+ create_data_type("vmodl.fault.SecurityError", "SecurityError", "vmodl.RuntimeFault", "vmodl.version.version0", nil)
43
+ create_data_type("vmodl.fault.SystemError", "SystemError", "vmodl.RuntimeFault", "vmodl.version.version0", [["reason", "string", "vmodl.version.version0"]])
44
+ create_data_type("vmodl.fault.UnexpectedFault", "UnexpectedFault", "vmodl.RuntimeFault", "vmodl.version.version0", [["faultName", "vmodl.TypeName", "vmodl.version.version0"], ["fault", "vmodl.MethodFault", "vmodl.version.version0", {:optional => true}]])
45
+ create_data_type("vmodl.query.InvalidCollectorVersion", "InvalidCollectorVersion", "vmodl.MethodFault", "vmodl.query.version.version1", nil)
46
+ create_data_type("vmodl.query.InvalidProperty", "InvalidProperty", "vmodl.MethodFault", "vmodl.query.version.version1", [["name", "vmodl.PropertyPath", "vmodl.query.version.version1"]])
47
+ create_managed_type("vmodl.query.PropertyCollector", "PropertyCollector", "vmodl.ManagedObject", "vmodl.query.version.version1", [["filter", "vmodl.query.PropertyCollector.Filter[]", "vmodl.query.version.version1", {:optional => true}, "System.View"]], [["createFilter", "CreateFilter", "vmodl.query.version.version1", [["spec", "vmodl.query.PropertyCollector.FilterSpec", "vmodl.query.version.version1", {}, nil], ["partialUpdates", "boolean", "vmodl.query.version.version1", {}, nil]], [{}, "vmodl.query.PropertyCollector.Filter", "vmodl.query.PropertyCollector.Filter"], "System.View", ["vmodl.query.InvalidProperty"]], ["retrieveContents", "RetrieveProperties", "vmodl.query.version.version1", [["specSet", "vmodl.query.PropertyCollector.FilterSpec[]", "vmodl.query.version.version1", {}, nil]], [{:optional => true}, "vmodl.query.PropertyCollector.ObjectContent[]", "vmodl.query.PropertyCollector.ObjectContent[]"], "System.Anonymous", ["vmodl.query.InvalidProperty"]], ["checkForUpdates", "CheckForUpdates", "vmodl.query.version.version1", [["version", "string", "vmodl.query.version.version1", {:optional => true}, nil]], [{:optional => true}, "vmodl.query.PropertyCollector.UpdateSet", "vmodl.query.PropertyCollector.UpdateSet"], "System.View", ["vmodl.query.InvalidCollectorVersion"]], ["waitForUpdates", "WaitForUpdates", "vmodl.query.version.version1", [["version", "string", "vmodl.query.version.version1", {:optional => true}, nil]], [{}, "vmodl.query.PropertyCollector.UpdateSet", "vmodl.query.PropertyCollector.UpdateSet"], "System.View", ["vmodl.query.InvalidCollectorVersion"]], ["cancelWaitForUpdates", "CancelWaitForUpdates", "vmodl.query.version.version1", [], [{}, "void", "void"], "System.View", nil], ["waitForUpdatesEx", "WaitForUpdatesEx", "vmodl.query.version.version3", [["version", "string", "vmodl.query.version.version3", {:optional => true}, nil], ["options", "vmodl.query.PropertyCollector.WaitOptions", "vmodl.query.version.version3", {:optional => true}, nil]], [{:optional => true}, "vmodl.query.PropertyCollector.UpdateSet", "vmodl.query.PropertyCollector.UpdateSet"], "System.View", ["vmodl.query.InvalidCollectorVersion"]], ["retrievePropertiesEx", "RetrievePropertiesEx", "vmodl.query.version.version3", [["specSet", "vmodl.query.PropertyCollector.FilterSpec[]", "vmodl.query.version.version3", {}, nil], ["options", "vmodl.query.PropertyCollector.RetrieveOptions", "vmodl.query.version.version3", {}, nil]], [{:optional => true}, "vmodl.query.PropertyCollector.RetrieveResult", "vmodl.query.PropertyCollector.RetrieveResult"], "System.Anonymous", ["vmodl.query.InvalidProperty"]], ["continueRetrievePropertiesEx", "ContinueRetrievePropertiesEx", "vmodl.query.version.version3", [["token", "string", "vmodl.query.version.version3", {}, nil]], [{}, "vmodl.query.PropertyCollector.RetrieveResult", "vmodl.query.PropertyCollector.RetrieveResult"], "System.Anonymous", ["vmodl.query.InvalidProperty"]], ["cancelRetrievePropertiesEx", "CancelRetrievePropertiesEx", "vmodl.query.version.version3", [["token", "string", "vmodl.query.version.version3", {}, nil]], [{}, "void", "void"], "System.Anonymous", ["vmodl.query.InvalidProperty"]], ["createPropertyCollector", "CreatePropertyCollector", "vmodl.query.version.version3", [], [{}, "vmodl.query.PropertyCollector", "vmodl.query.PropertyCollector"], "System.View", nil], ["destroy", "DestroyPropertyCollector", "vmodl.query.version.version3", [], [{}, "void", "void"], "System.View", nil]])
48
+ create_data_type("vmodl.query.PropertyCollector.FilterSpec", "PropertyFilterSpec", "vmodl.DynamicData", "vmodl.query.version.version1", [["propSet", "vmodl.query.PropertyCollector.PropertySpec[]", "vmodl.query.version.version1"], ["objectSet", "vmodl.query.PropertyCollector.ObjectSpec[]", "vmodl.query.version.version1"], ["reportMissingObjectsInResults", "boolean", "vmodl.query.version.version3", {:optional => true}]])
49
+ create_data_type("vmodl.query.PropertyCollector.PropertySpec", "PropertySpec", "vmodl.DynamicData", "vmodl.query.version.version1", [["type", "vmodl.TypeName", "vmodl.query.version.version1"], ["all", "boolean", "vmodl.query.version.version1", {:optional => true}], ["pathSet", "vmodl.PropertyPath[]", "vmodl.query.version.version1", {:optional => true}]])
50
+ create_data_type("vmodl.query.PropertyCollector.ObjectSpec", "ObjectSpec", "vmodl.DynamicData", "vmodl.query.version.version1", [["obj", "vmodl.ManagedObject", "vmodl.query.version.version1"], ["skip", "boolean", "vmodl.query.version.version1", {:optional => true}], ["selectSet", "vmodl.query.PropertyCollector.SelectionSpec[]", "vmodl.query.version.version1", {:optional => true}]])
51
+ create_data_type("vmodl.query.PropertyCollector.SelectionSpec", "SelectionSpec", "vmodl.DynamicData", "vmodl.query.version.version1", [["name", "string", "vmodl.query.version.version1", {:optional => true}]])
52
+ create_data_type("vmodl.query.PropertyCollector.TraversalSpec", "TraversalSpec", "vmodl.query.PropertyCollector.SelectionSpec", "vmodl.query.version.version1", [["type", "vmodl.TypeName", "vmodl.query.version.version1"], ["path", "vmodl.PropertyPath", "vmodl.query.version.version1"], ["skip", "boolean", "vmodl.query.version.version1", {:optional => true}], ["selectSet", "vmodl.query.PropertyCollector.SelectionSpec[]", "vmodl.query.version.version1", {:optional => true}]])
53
+ create_managed_type("vmodl.query.PropertyCollector.Filter", "PropertyFilter", "vmodl.ManagedObject", "vmodl.query.version.version1", [["spec", "vmodl.query.PropertyCollector.FilterSpec", "vmodl.query.version.version1", {}, nil], ["partialUpdates", "boolean", "vmodl.query.version.version1", {}, nil]], [["destroy", "DestroyPropertyFilter", "vmodl.query.version.version1", [], [{}, "void", "void"], nil, nil]])
54
+ create_data_type("vmodl.query.PropertyCollector.ObjectContent", "ObjectContent", "vmodl.DynamicData", "vmodl.query.version.version1", [["obj", "vmodl.ManagedObject", "vmodl.query.version.version1"], ["propSet", "vmodl.DynamicProperty[]", "vmodl.query.version.version1", {:optional => true}], ["missingSet", "vmodl.query.PropertyCollector.MissingProperty[]", "vmodl.query.version.version1", {:optional => true}]])
55
+ create_data_type("vmodl.query.PropertyCollector.UpdateSet", "UpdateSet", "vmodl.DynamicData", "vmodl.query.version.version1", [["version", "string", "vmodl.query.version.version1"], ["filterSet", "vmodl.query.PropertyCollector.FilterUpdate[]", "vmodl.query.version.version1", {:optional => true}], ["truncated", "boolean", "vmodl.query.version.version3", {:optional => true}]])
56
+ create_data_type("vmodl.query.PropertyCollector.FilterUpdate", "PropertyFilterUpdate", "vmodl.DynamicData", "vmodl.query.version.version1", [["filter", "vmodl.query.PropertyCollector.Filter", "vmodl.query.version.version1"], ["objectSet", "vmodl.query.PropertyCollector.ObjectUpdate[]", "vmodl.query.version.version1", {:optional => true}], ["missingSet", "vmodl.query.PropertyCollector.MissingObject[]", "vmodl.query.version.version1", {:optional => true}]])
57
+ create_data_type("vmodl.query.PropertyCollector.ObjectUpdate", "ObjectUpdate", "vmodl.DynamicData", "vmodl.query.version.version1", [["kind", "vmodl.query.PropertyCollector.ObjectUpdate.Kind", "vmodl.query.version.version1"], ["obj", "vmodl.ManagedObject", "vmodl.query.version.version1"], ["changeSet", "vmodl.query.PropertyCollector.Change[]", "vmodl.query.version.version1", {:optional => true}], ["missingSet", "vmodl.query.PropertyCollector.MissingProperty[]", "vmodl.query.version.version1", {:optional => true}]])
58
+ create_enum_type("vmodl.query.PropertyCollector.ObjectUpdate.Kind", "ObjectUpdateKind", "vmodl.query.version.version1", ["modify", "enter", "leave"])
59
+ create_data_type("vmodl.query.PropertyCollector.Change", "PropertyChange", "vmodl.DynamicData", "vmodl.query.version.version1", [["name", "vmodl.PropertyPath", "vmodl.query.version.version1"], ["op", "vmodl.query.PropertyCollector.Change.Op", "vmodl.query.version.version1"], ["val", "anyType", "vmodl.query.version.version1", {:optional => true}]])
60
+ create_enum_type("vmodl.query.PropertyCollector.Change.Op", "PropertyChangeOp", "vmodl.query.version.version1", ["add", "remove", "assign", "indirectRemove"])
61
+ create_data_type("vmodl.query.PropertyCollector.MissingProperty", "MissingProperty", "vmodl.DynamicData", "vmodl.query.version.version1", [["path", "vmodl.PropertyPath", "vmodl.query.version.version1"], ["fault", "vmodl.MethodFault", "vmodl.query.version.version1"]])
62
+ create_data_type("vmodl.query.PropertyCollector.MissingObject", "MissingObject", "vmodl.DynamicData", "vmodl.query.version.version1", [["obj", "vmodl.ManagedObject", "vmodl.query.version.version1"], ["fault", "vmodl.MethodFault", "vmodl.query.version.version1"]])
63
+ create_data_type("vmodl.query.PropertyCollector.WaitOptions", "WaitOptions", "vmodl.DynamicData", "vmodl.query.version.version3", [["maxWaitSeconds", "int", "vmodl.query.version.version3", {:optional => true}], ["maxObjectUpdates", "int", "vmodl.query.version.version3", {:optional => true}]])
64
+ create_data_type("vmodl.query.PropertyCollector.RetrieveOptions", "RetrieveOptions", "vmodl.DynamicData", "vmodl.query.version.version3", [["maxObjects", "int", "vmodl.query.version.version3", {:optional => true}]])
65
+ create_data_type("vmodl.query.PropertyCollector.RetrieveResult", "RetrieveResult", "vmodl.DynamicData", "vmodl.query.version.version3", [["token", "string", "vmodl.query.version.version3", {:optional => true}], ["objects", "vmodl.query.PropertyCollector.ObjectContent[]", "vmodl.query.version.version3"]])
66
+
67
+ end
68
+ end
@@ -0,0 +1,14 @@
1
+ module VimSdk
2
+
3
+ class DataType < BaseType
4
+ attr_accessor :parent
5
+ attr_accessor :properties
6
+
7
+ def initialize(name, wsdl_name, parent, version, properties)
8
+ super(name, wsdl_name, version)
9
+ @parent = VmodlHelper.vmodl_type_to_ruby(parent) if parent
10
+ @properties = properties ? properties.collect { |property| Property.new(*property) } : []
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,12 @@
1
+ module VimSdk
2
+
3
+ class EnumType < BaseType
4
+ attr_accessor :values
5
+
6
+ def initialize(name, wsdl_name, version, values)
7
+ super(name, wsdl_name, version)
8
+ @values = values
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,9 @@
1
+ class String
2
+
3
+ unless method_defined?(:to_xs)
4
+ define_method(:to_xs) do
5
+ encode(:xml => :text)
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,12 @@
1
+ module VimSdk
2
+
3
+ class ManagedType < DataType
4
+ attr_accessor :managed_methods
5
+
6
+ def initialize(name, wsdl_name, parent, version, properties, methods)
7
+ super(name, wsdl_name, parent, version, properties)
8
+ @managed_methods = methods ? methods.collect { |method| Method.new(*method) } : []
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,37 @@
1
+ module VimSdk
2
+
3
+ class Method
4
+ attr_accessor :name
5
+ attr_accessor :wsdl_name
6
+ attr_accessor :version
7
+ attr_accessor :privilege
8
+ attr_accessor :arguments
9
+ attr_accessor :result_type
10
+ attr_accessor :faults
11
+
12
+ def initialize(name, wsdl_name, version, arguments, result, privilege, faults)
13
+ @name = VmodlHelper.vmodl_property_to_ruby(name)
14
+ @wsdl_name = wsdl_name
15
+ @version = version
16
+ @privilege = privilege
17
+ @arguments = arguments.collect { |argument| Property.new(*argument) }
18
+ @result_type = VmodlHelper.vmodl_type_to_ruby(result[1])
19
+ @faults = faults.collect { |fault| VmodlHelper.vmodl_type_to_ruby(fault) } if faults
20
+ @result_type_optional = false
21
+
22
+ result[0].each do |key, value|
23
+ case key
24
+ when :optional
25
+ @result_type_optional = value
26
+ else
27
+ raise "Unknown flag: #{key}"
28
+ end
29
+ end
30
+ end
31
+
32
+ def result_type_optional?
33
+ @result_type_optional
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,11 @@
1
+ # These were not auto generated for some reason
2
+
3
+ module VimSdk
4
+ module VmomiSupport
5
+
6
+ create_data_type("vmodl.MethodFault", "MethodFault", "vmodl.DynamicData", "vmodl.version.version0", [["msg", "string", "vmodl.version.version0", {:optional => true}], ["faultCause", "vmodl.MethodFault", "vmodl.version.version1", {:optional => true}], ["faultMessage", "vmodl.LocalizableMessage[]", "vmodl.version.version1", {:optional => true}]])
7
+ create_data_type("vmodl.RuntimeFault", "RuntimeFault", "vmodl.MethodFault", "vmodl.version.version0", [])
8
+ create_data_type("vmodl.LocalizedMethodFault", "LocalizedMethodFault", "vmodl.MethodFault", "vmodl.version.version0", [["fault", "vmodl.MethodFault", "vmodl.version.version0", {}], ["localizedMessage", "string", "vmodl.version.version0", {:optional => true}]])
9
+
10
+ end
11
+ end
@@ -0,0 +1,49 @@
1
+ module VimSdk
2
+
3
+ class Property
4
+ attr_accessor :name
5
+ attr_accessor :type
6
+ attr_accessor :wsdl_name
7
+ attr_accessor :version
8
+ attr_accessor :privilege
9
+ attr_accessor :expected_type
10
+
11
+ def initialize(name, type, version, flags = {}, privilege = nil)
12
+ @name = VmodlHelper.vmodl_property_to_ruby(name)
13
+ @type = type.kind_of?(Class) ? type : VmodlHelper.vmodl_type_to_ruby(type)
14
+ @wsdl_name = name
15
+ @version = version
16
+ @privilege = privilege
17
+ @expected_type = nil
18
+ @optional = false
19
+ @link = false
20
+ @linkable = false
21
+
22
+ flags.each do |key, value|
23
+ case key
24
+ when :optional
25
+ @optional = value
26
+ when :link
27
+ @link = value
28
+ when :linkable
29
+ @linkable = value
30
+ else
31
+ raise "Unknown flag: #{key}"
32
+ end
33
+ end
34
+ end
35
+
36
+ def optional?
37
+ @optional
38
+ end
39
+
40
+ def link?
41
+ @link
42
+ end
43
+
44
+ def linkable?
45
+ @linkable
46
+ end
47
+ end
48
+
49
+ end