RbVviews 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/RbVviews.rb +127 -0
  2. metadata +45 -0
@@ -0,0 +1,127 @@
1
+ require 'rbvmomi'
2
+
3
+ class RbVviews
4
+ def initialize (host,user,password)
5
+ @host, @user, @password = host, user, password
6
+ end
7
+
8
+ def connect
9
+ @vim = RbVmomi::VIM.connect host: @host, user: @user, password: @password, insecure: true
10
+ @vim.instance_variable_set(:@serviceContent,@vim.serviceInstance.RetrieveServiceContent)
11
+ vcenter_current_time = @vim.serviceInstance.CurrentTime()
12
+ puts "vCenter server time is currently #{vcenter_current_time}"
13
+ puts "Connected to vCenter at #{@host}"
14
+ end
15
+
16
+ def close
17
+ @vim.serviceContent.sessionManager.Logout rescue RbVmomi::Fault
18
+ puts "Disconnected from vCenter at #{@host}"
19
+ end
20
+
21
+ def get_view (type,field,value)
22
+ propSet = [
23
+ { :type => type, :pathSet => ['name',field], :all => false }
24
+ ]
25
+
26
+ filterSpec = RbVmomi::VIM.PropertyFilterSpec(
27
+ :objectSet => [
28
+ :obj => @vim.rootFolder,
29
+ :skip => false,
30
+ :selectSet => [
31
+ RbVmomi::VIM.TraversalSpec(
32
+ :name => 'folderTraversalSpec',
33
+ :type => 'Folder',
34
+ :path => 'childEntity',
35
+ :skip => false,
36
+ :selectSet => [
37
+ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec'),
38
+ RbVmomi::VIM.SelectionSpec(:name => 'datacenterVmTraversalSpec'),
39
+ RbVmomi::VIM.SelectionSpec(:name => 'datacenterHostTraversalSpec'),
40
+ RbVmomi::VIM.SelectionSpec(:name => 'computeResourceHostTraversalSpec'),
41
+ RbVmomi::VIM.SelectionSpec(:name => 'computeResourceRpTraversalSpec'),
42
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolTraversalSpec'),
43
+ RbVmomi::VIM.SelectionSpec(:name => 'hostVmTraversalSpec'),
44
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolVmTraversalSpec'),
45
+ RbVmomi::VIM.SelectionSpec(:name => 'datacenterDatastoreTraversalSpec'),
46
+ RbVmomi::VIM.SelectionSpec(:name => 'datacenterNetworkTraversalSpec')
47
+ ]
48
+ ),
49
+ RbVmomi::VIM.TraversalSpec(
50
+ :name => 'datacenterVmTraversalSpec',
51
+ :type => 'Datacenter',
52
+ :path => 'vmFolder',
53
+ :skip => false,
54
+ :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec') ]
55
+ ),
56
+ RbVmomi::VIM.TraversalSpec(
57
+ :name => 'datacenterHostTraversalSpec',
58
+ :type => 'Datacenter',
59
+ :path => 'hostFolder',
60
+ :skip => false,
61
+ :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec') ]
62
+ ),
63
+ RbVmomi::VIM.TraversalSpec(
64
+ :name => 'computeResourceHostTraversalSpec',
65
+ :type => 'ComputeResource',
66
+ :path => 'host',
67
+ :skip => false
68
+ ),
69
+ RbVmomi::VIM.TraversalSpec(
70
+ :name => 'computeResourceRpTraversalSpec',
71
+ :type => 'ComputeResource',
72
+ :path => 'resourcePool',
73
+ :skip => false,
74
+ :selectSet => [
75
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolTraversalSpec'),
76
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolVmTraversalSpec')
77
+ ]
78
+ ),
79
+ RbVmomi::VIM.TraversalSpec(
80
+ :name => 'resourcePoolTraversalSpec',
81
+ :type => 'ResourcePool',
82
+ :path => 'resourcePool',
83
+ :skip => false,
84
+ :selectSet => [
85
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolTraversalSpec'),
86
+ RbVmomi::VIM.SelectionSpec(:name => 'resourcePoolVmTraversalSpec')
87
+ ]
88
+ ),
89
+ RbVmomi::VIM.TraversalSpec(
90
+ :name => 'hostVmTraversalSpec',
91
+ :type => 'HostSystem',
92
+ :path => 'vm',
93
+ :skip => false,
94
+ :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec') ]
95
+ ),
96
+ RbVmomi::VIM.TraversalSpec(
97
+ :name => 'resourcePoolVmTraversalSpec',
98
+ :type => 'ResourcePool',
99
+ :path => 'vm',
100
+ :skip => false,
101
+ ),
102
+ RbVmomi::VIM.TraversalSpec(
103
+ :name => 'datacenterDatastoreTraversalSpec',
104
+ :type => 'Datacenter',
105
+ :path => 'datastoreFolder',
106
+ :skip => false,
107
+ :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec') ]
108
+ ),
109
+ RbVmomi::VIM.TraversalSpec(
110
+ :name => 'datacenterNetworkTraversalSpec',
111
+ :type => 'Datacenter',
112
+ :path => 'networkFolder',
113
+ :skip => false,
114
+ :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'folderTraversalSpec') ]
115
+ )
116
+ ]
117
+ ],
118
+ :propSet => propSet
119
+ )
120
+
121
+ results = @vim.propertyCollector.RetrieveProperties(:specSet => [filterSpec])
122
+
123
+ result = results.select {|x| x.obj[field] == value || value == nil || value == ''}
124
+ return result
125
+ end
126
+ end
127
+
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RbVviews
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Clinton Kitson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-05 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: ''
15
+ email: clinton.kitson@emc.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/RbVviews.rb
21
+ homepage: http://rubygems.org/gems/RbVviews
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.23
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: Retrieve detailed vCenter views
45
+ test_files: []