xencap 1.1.0 → 1.2.0
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/lib/xencap/tasks.rb +32 -5
- metadata +2 -2
data/lib/xencap/tasks.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
|
-
set :
|
2
|
+
set :xencap_server_ip, nil
|
3
|
+
set :xencap_server_uri, do
|
4
|
+
"http://#{xencap_server_ip}"
|
5
|
+
end
|
3
6
|
set :xencap_login, "root"
|
4
7
|
set :xencap_password, do
|
5
8
|
Capistrano::CLI.password_prompt("xen password: ")
|
@@ -26,6 +29,32 @@ Capistrano::Configuration.instance.load do
|
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
32
|
+
namespace :iso_lib do
|
33
|
+
task :create, :role => :xenserver do
|
34
|
+
xencap.session.setup
|
35
|
+
name = "ISO Library"
|
36
|
+
run "mkdir -p /var/lib/isos"
|
37
|
+
|
38
|
+
sr_ref, sr_record = xencap_plugin.sr.find_record(:name_label => name)
|
39
|
+
if sr_ref
|
40
|
+
puts "#{name}already exists. Exiting."
|
41
|
+
exit
|
42
|
+
end
|
43
|
+
|
44
|
+
host_ref, host = xencap_plugin.host.find_all_records.first
|
45
|
+
|
46
|
+
puts "Creating Storge Repository..."
|
47
|
+
sr_ref = xencap_plugin.sr.create(host_ref, {"location" => "/var/lib/isos", "legacy_mode" => "true"}, "1", name, "", "iso", "iso", false)
|
48
|
+
puts "Created. Add images to /var/lib/isos/"
|
49
|
+
end
|
50
|
+
|
51
|
+
task :scan do
|
52
|
+
xencap.session.setup
|
53
|
+
sr_ref, sr_record = xencap_plugin.sr.find_record(:name_label => "ISO Library")
|
54
|
+
xencap_plugin.sr.scan(sr_ref)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
29
58
|
namespace :vm do
|
30
59
|
task :list do
|
31
60
|
xencap.session.setup
|
@@ -34,8 +63,6 @@ Capistrano::Configuration.instance.load do
|
|
34
63
|
|
35
64
|
task :vnc_tunnel do
|
36
65
|
xencap.session.setup
|
37
|
-
ip = xencap_server_uri.gsub(%r{^https?://}, '')
|
38
|
-
|
39
66
|
vms = xencap_plugin.vm.get_vms.inject({}) do |out, (vm_ref, params)|
|
40
67
|
dom_id = params["domid"]
|
41
68
|
out.merge({vm_ref => {:name => params["name_label"], :dom_id => params["domid"]}})
|
@@ -50,12 +77,12 @@ Capistrano::Configuration.instance.load do
|
|
50
77
|
|
51
78
|
valid_choice = vms.map {|vm, params| params[:dom_id]}.include?(choice)
|
52
79
|
if valid_choice
|
53
|
-
cmd = "ssh root@#{
|
80
|
+
cmd = "ssh root@#{xencap_server_ip} 'xenstore-read /local/domain/#{choice.to_i}/console/vnc-port'"
|
54
81
|
port = `#{cmd}`.chomp
|
55
82
|
puts "Establishing tunnel to VNC server."
|
56
83
|
puts "Use your VNC client to connec to: localhost:#{port}"
|
57
84
|
puts "Kill (^c) this when you're done."
|
58
|
-
`ssh -N -L #{port}:localhost:#{port} root@#{
|
85
|
+
`ssh -N -L #{port}:localhost:#{port} root@#{xencap_server_ip}`
|
59
86
|
else
|
60
87
|
puts "ERROR: No such VM"
|
61
88
|
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.2.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-04 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)
|