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 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
- commands_from 'vmesh/commands'
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
- desc 'TODO Describe info here'
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
@@ -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.sort_by{ |ds| ds.free_space }.reverse.first
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
@@ -1,3 +1,3 @@
1
1
  module Vmesh
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
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
- @vim = RbVmomi::VIM.connect connection_options
11
- @options = connection_options
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.3
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-17 00:00:00.000000000 Z
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