vmesh 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +37 -0
- data/bin/vmesh +6 -25
- data/lib/vmesh/commands/df.rb +21 -0
- data/lib/vmesh/datastore.rb +8 -2
- data/lib/vmesh/version.rb +1 -1
- data/lib/vmesh/vsphere.rb +11 -3
- metadata +3 -2
data/README.md
CHANGED
@@ -8,6 +8,27 @@ Vmesh is a Command Suite (think git) to make managing VMWare components easier a
|
|
8
8
|
|
9
9
|
Vmesh is currently Alpha, hence the 0-dot version; it is susceptible to methods, classes and modules being renamed, added or deleted.
|
10
10
|
|
11
|
+
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
|
12
|
+
|
13
|
+
- [Command suite for VMWare](#)
|
14
|
+
- [What is Vmesh?](#)
|
15
|
+
- [THIS IS ALPHA!](#)
|
16
|
+
- [Setup](#)
|
17
|
+
- [I don't want to type my connection config every time](#)
|
18
|
+
- [How to setup cloning servers](#)
|
19
|
+
- [AMG It complains about vtypes and stuff](#)
|
20
|
+
- [Usage](#)
|
21
|
+
- [Help](#)
|
22
|
+
- [Create or clone](#)
|
23
|
+
- [IP Handling](#)
|
24
|
+
- [How vmesh deals with datastores](#)
|
25
|
+
- [Power](#)
|
26
|
+
- [Deleting a VM can be done with the command](#)
|
27
|
+
- [List](#)
|
28
|
+
- [Disk Usage](#)
|
29
|
+
- [TODOs](#)
|
30
|
+
- [Copyright](#)
|
31
|
+
|
11
32
|
## Setup
|
12
33
|
|
13
34
|
Install the gem
|
@@ -145,6 +166,22 @@ List directories only
|
|
145
166
|
vmesh ls -d
|
146
167
|
```
|
147
168
|
|
169
|
+
### Disk Usage
|
170
|
+
|
171
|
+
_Note_ you can use `df` or `diskspace`
|
172
|
+
|
173
|
+
Display disk usage for all disks at current dc
|
174
|
+
|
175
|
+
```
|
176
|
+
vmesh df
|
177
|
+
```
|
178
|
+
|
179
|
+
Display disk usage for all disks with 'gold' in the name
|
180
|
+
|
181
|
+
```
|
182
|
+
vmesh df gold
|
183
|
+
```
|
184
|
+
|
148
185
|
## TODOs
|
149
186
|
|
150
187
|
* Sort out problem with upstream rbvmomi/nogokiri
|
data/bin/vmesh
CHANGED
@@ -17,7 +17,7 @@ include GLI::App
|
|
17
17
|
version Vmesh::VERSION
|
18
18
|
Vmesh.logger = Logger.new(STDOUT)
|
19
19
|
@logger = Vmesh.logger
|
20
|
-
|
20
|
+
@logger.level = Logger::WARN
|
21
21
|
|
22
22
|
config_filename = '.vmesh.rc'
|
23
23
|
|
@@ -71,31 +71,10 @@ desc 'VCenter Resource Pool'
|
|
71
71
|
arg_name 'vcenter resource pool'
|
72
72
|
flag [:r,:resource_pool]
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
desc 'TODO Describe destroy here'
|
77
|
-
arg_name 'Describe arguments to destroy here'
|
78
|
-
command :destroy do |c|
|
79
|
-
c.action do |global_options,options,args|
|
80
|
-
puts "destroy command ran"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
desc 'TODO Describe run here'
|
85
|
-
arg_name 'Describe arguments to run here'
|
86
|
-
command :run do |c|
|
87
|
-
c.action do |global_options,options,args|
|
88
|
-
puts "run command ran"
|
89
|
-
end
|
90
|
-
end
|
74
|
+
desc 'Run in debug mode'
|
75
|
+
switch [:debug]
|
91
76
|
|
92
|
-
|
93
|
-
arg_name 'Describe arguments to info here'
|
94
|
-
command :info do |c|
|
95
|
-
c.action do |global_options,options,args|
|
96
|
-
puts "info command ran"
|
97
|
-
end
|
98
|
-
end
|
77
|
+
commands_from 'vmesh/commands'
|
99
78
|
|
100
79
|
pre do |global,command,options,args|
|
101
80
|
# Pre logic here
|
@@ -103,6 +82,8 @@ pre do |global,command,options,args|
|
|
103
82
|
# chosen command
|
104
83
|
# Use skips_pre before a command to skip this block
|
105
84
|
# on that command only
|
85
|
+
@logger.level = Logger::DEBUG if global[:debug]
|
86
|
+
|
106
87
|
if global[:user].to_s == ''
|
107
88
|
not_so_secret_username = ask("Enter Username please:") {|q| q.echo = true}
|
108
89
|
global['u'] = global[:u] = global['user'] = global[:user] = not_so_secret_username
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
desc 'report datastore space usage'
|
3
|
+
arg_name '[name]'
|
4
|
+
|
5
|
+
command [:df,:diskspace] do |c|
|
6
|
+
|
7
|
+
c.action do |global_options,options,args|
|
8
|
+
name = ARGV.shift if ARGV.any?
|
9
|
+
vm_manager = Vmesh::VSphere.new global_options
|
10
|
+
if name.to_s == ''
|
11
|
+
all_datastores = Vmesh::Datastore.get_all(vm_manager.vim, vm_manager.get_datacenter(global_options[:datacenter]))
|
12
|
+
else
|
13
|
+
all_datastores = Vmesh::Datastore.get_all_matching(vm_manager.vim, name, vm_manager.get_datacenter(global_options[:datacenter]))
|
14
|
+
end
|
15
|
+
puts '%-30.30s%15.15s%15.15s%15.15s%8.8s' % ["Name","Size","Available","Used","Use%"]
|
16
|
+
all_datastores.each do |ds|
|
17
|
+
pc_free = (ds.free_space.to_i * 100) / ds.capacity.to_i
|
18
|
+
puts '%-30.30s%15.15s%15.15s%15.15s%8.8s' % ["#{ds.name}","#{ds.capacity}","#{ds.free_space}","#{ds.capacity}","#{pc_free}%"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/vmesh/datastore.rb
CHANGED
@@ -8,7 +8,12 @@ module Vmesh
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.get(vim, name, datacenter)
|
11
|
-
Vmesh::logger.debug "Getting datastore named #{name} at datacenter #{datacenter.name}."
|
11
|
+
Vmesh::logger.debug "Getting a single datastore named #{name} at datacenter #{datacenter.name}."
|
12
|
+
get_all_matching(vim,name,datacenter).sort_by{ |ds| ds.free_space }.reverse.first
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.get_all_matching(vim, name, datacenter)
|
16
|
+
Vmesh::logger.debug "Getting datastore matching name #{name} at datacenter #{datacenter.name}."
|
12
17
|
stores = self.get_all(vim, datacenter).select{ |ds| ds.name == name }
|
13
18
|
if stores.nil? or stores.empty?
|
14
19
|
Vmesh::logger.info "No exact match found, searching for partial match"
|
@@ -16,9 +21,10 @@ module Vmesh
|
|
16
21
|
Vmesh::logger.debug "Found #{stores.count} datastores."
|
17
22
|
Vmesh::logger.debug "#{stores.map{|ds| "Name #{ds.name}, free space #{ds.free_space}"}}"
|
18
23
|
end
|
19
|
-
stores
|
24
|
+
stores
|
20
25
|
end
|
21
26
|
|
27
|
+
|
22
28
|
def self.get_all(vim, datacenter)
|
23
29
|
Vmesh::logger.debug "get_all datastores at #{datacenter.name}."
|
24
30
|
vim.serviceContent.viewManager.CreateContainerView({
|
data/lib/vmesh/version.rb
CHANGED
data/lib/vmesh/vsphere.rb
CHANGED
@@ -6,9 +6,17 @@ module Vmesh
|
|
6
6
|
class VSphere
|
7
7
|
attr_accessor :vim, :options
|
8
8
|
def initialize(connection_options)
|
9
|
-
Vmesh::logger.debug "Opening connection to #{connection_options['host']}"
|
10
|
-
|
11
|
-
|
9
|
+
Vmesh::logger.debug "Opening connection to #{connection_options['host']} #{connection_options.inspect}"
|
10
|
+
opts = {
|
11
|
+
:host => connection_options[:host],
|
12
|
+
:user => connection_options[:user],
|
13
|
+
:password => connection_options[:password],
|
14
|
+
:datacenter => connection_options[:datacenter],
|
15
|
+
:host => connection_options[:host],
|
16
|
+
:insecure => connection_options[:insecure],
|
17
|
+
}
|
18
|
+
@vim = RbVmomi::VIM.connect opts
|
19
|
+
@options = opts
|
12
20
|
end
|
13
21
|
|
14
22
|
# Can we search through the datacenters for a machine?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmesh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
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: 2014-11-
|
12
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- lib/vmesh.rb
|
185
185
|
- lib/vmesh/commands/create.rb
|
186
186
|
- lib/vmesh/commands/create_helpers.rb
|
187
|
+
- lib/vmesh/commands/df.rb
|
187
188
|
- lib/vmesh/commands/list.rb
|
188
189
|
- lib/vmesh/commands/power.rb
|
189
190
|
- lib/vmesh/commands/revert.rb
|