xencap 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/xencap/session_proxy/vm.rb +2 -2
- data/lib/xencap/tasks.rb +29 -0
- metadata +2 -2
@@ -17,8 +17,8 @@ class Xencap::SessionProxy::Vm < Xencap::SessionProxy
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def get_vms
|
20
|
-
get_all_records.reject do |vm|
|
21
|
-
|
20
|
+
get_all_records.reject do |vm, params|
|
21
|
+
params['is_a_template'] || params['is_control_domain']
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
data/lib/xencap/tasks.rb
CHANGED
@@ -31,6 +31,35 @@ Capistrano::Configuration.instance.load do
|
|
31
31
|
xencap.session.setup
|
32
32
|
xencap_plugin.vm.get_all_records.reject {|ref, record| record['is_a_template'] || record['is_control_domain'] }.values.each {|v| puts v['name_label'] }
|
33
33
|
end
|
34
|
+
|
35
|
+
task :vnc_tunnel do
|
36
|
+
xencap.session.setup
|
37
|
+
ip = xencap_server_uri.gsub(%r{^https?://}, '')
|
38
|
+
|
39
|
+
vms = xencap_plugin.vm.get_vms.inject({}) do |out, (vm_ref, params)|
|
40
|
+
dom_id = params["domid"]
|
41
|
+
out.merge({vm_ref => {:name => params["name_label"], :dom_id => params["domid"]}})
|
42
|
+
end
|
43
|
+
|
44
|
+
puts "VMs"
|
45
|
+
vms.each do |vm, params|
|
46
|
+
puts " #{params[:dom_id]}: #{params[:name]}"
|
47
|
+
end
|
48
|
+
puts "Which server would you like to connect to? "
|
49
|
+
choice = $stdin.gets.chomp
|
50
|
+
|
51
|
+
valid_choice = vms.map {|vm, params| params[:dom_id]}.include?(choice)
|
52
|
+
if valid_choice
|
53
|
+
cmd = "ssh root@#{ip} 'xenstore-read /local/domain/#{choice.to_i}/console/vnc-port'"
|
54
|
+
port = `#{cmd}`.chomp
|
55
|
+
puts "Establishing tunnel to VNC server."
|
56
|
+
puts "Use your VNC client to connec to: localhost:#{port}"
|
57
|
+
puts "Kill (^c) this when you're done."
|
58
|
+
`ssh -N -L #{port}:localhost:#{port} root@#{ip}`
|
59
|
+
else
|
60
|
+
puts "ERROR: No such VM"
|
61
|
+
end
|
62
|
+
end
|
34
63
|
end
|
35
64
|
end
|
36
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xencap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
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-02-
|
12
|
+
date: 2014-02-02 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Should work with any xen system that uses XAPI (including XenServer &
|
15
15
|
XCP)
|