vagrant-libvirt 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38f679c4994924e362840cb557548fd54cb12fa9
4
- data.tar.gz: a6f1ffd51906f47c366fb72b0cf87b8ffbd145b2
3
+ metadata.gz: 9bc2f0fdfc01511f71626fdc2fe8b7cbe21c6a09
4
+ data.tar.gz: a6af2428f90f0ccc535835336f07cf1f765dd4ba
5
5
  SHA512:
6
- metadata.gz: 1cdcb6b6d8d55a4dc5e025cc7c83452d64d1f964013ade0537acfbea3c27c314133a52ff58d842ec74832056f230d4ea259757482101a1f2613162199aeaccde
7
- data.tar.gz: de6039104f84243740a0437c278f0d6b4b283293ff6efb0a15e6109cd58f4fa0d6ebdd2111bece79e88b87fc85b9d4d5501cbdbefcd8832bda8c539e375767b1
6
+ metadata.gz: 62d3180bf379f2b6d264c6c8e8fa29e8d340b5d6dd74c456ac536967c8c10c77b42a942963569db8e6ed936622a8b20ebf9dbb6f81a12b99e420290b943b5b54
7
+ data.tar.gz: 6b6ff342e37bfe6c6ceae077d974dad0cedae2eed7581529b2e0b465dac81a007b6ed17c026e6125a160c741abe3322b3338e8e9a584ed1abbbcfb2b79a3ed1b
@@ -3,6 +3,8 @@ module VagrantPlugins
3
3
  module Action
4
4
  # Adds support for vagrant's `forward_ports` configuration directive.
5
5
  class ForwardPorts
6
+ @@lock = Mutex.new
7
+
6
8
  def initialize(app, env)
7
9
  @app = app
8
10
  @logger = Log4r::Logger.new('vagrant_libvirt::action::forward_ports')
@@ -94,8 +96,21 @@ module VagrantPlugins
94
96
  ) + ssh_info[:private_key_path].map do |pk|
95
97
  "IdentityFile=#{pk}"
96
98
  end).map { |s| s.prepend('-o ') }.join(' ')
97
-
98
- ssh_cmd = "ssh #{options} #{params}"
99
+
100
+ # TODO: instead of this, try and lock and get the stdin from spawn...
101
+ ssh_cmd = ''
102
+ if host_port <= 1024
103
+ @@lock.synchronize do
104
+ # TODO: add i18n
105
+ @env[:ui].info 'Requesting sudo for host port(s) <= 1024'
106
+ r = system('sudo -v')
107
+ if r
108
+ ssh_cmd << 'sudo ' # add sudo prefix
109
+ end
110
+ end
111
+ end
112
+
113
+ ssh_cmd << "ssh #{options} #{params}"
99
114
 
100
115
  @logger.debug "Forwarding port with `#{ssh_cmd}`"
101
116
  spawn(ssh_cmd, [:out, :err] => '/dev/null')
@@ -119,6 +134,8 @@ module VagrantPlugins
119
134
  module Action
120
135
  # Cleans up ssh-forwarded ports on VM halt/destroy.
121
136
  class ClearForwardedPorts
137
+ @@lock = Mutex.new
138
+
122
139
  def initialize(app, env)
123
140
  @app = app
124
141
  @logger = Log4r::Logger.new(
@@ -133,10 +150,19 @@ module VagrantPlugins
133
150
  env[:ui].info I18n.t(
134
151
  'vagrant.actions.vm.clear_forward_ports.deleting'
135
152
  )
136
- ssh_pids.each do |pid|
137
- next unless ssh_pid?(pid)
138
- @logger.debug "Killing pid #{pid}"
139
- system "kill #{pid}"
153
+ ssh_pids.each do |tag|
154
+ next unless ssh_pid?(tag[:pid])
155
+ @logger.debug "Killing pid #{tag[:pid]}"
156
+ kill_cmd = ''
157
+
158
+ if tag[:port] <= 1024
159
+ kill_cmd << 'sudo ' # add sudo prefix
160
+ end
161
+
162
+ kill_cmd << "kill #{tag[:pid]}"
163
+ @@lock.synchronize do
164
+ system(kill_cmd)
165
+ end
140
166
  end
141
167
 
142
168
  @logger.info 'Removing ssh pid files'
@@ -153,7 +179,10 @@ module VagrantPlugins
153
179
  def ssh_pids
154
180
  glob = @env[:machine].data_dir.join('pids').to_s + '/ssh_*.pid'
155
181
  @ssh_pids = Dir[glob].map do |file|
156
- File.read(file).strip.chomp
182
+ {
183
+ :pid => File.read(file).strip.chomp,
184
+ :port => File.basename(file)['ssh_'.length..-1*('.pid'.length+1)].to_i
185
+ }
157
186
  end
158
187
  end
159
188
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProviderLibvirt
3
- VERSION = '0.0.17'
3
+ VERSION = '0.0.18'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-libvirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Stanek
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-23 00:00:00.000000000 Z
13
+ date: 2014-06-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fog