Class: VagrantPlugins::ProviderLibvirt::Action::ClearForwardedPorts
- Inherits:
-
Object
- Object
- VagrantPlugins::ProviderLibvirt::Action::ClearForwardedPorts
- Defined in:
- lib/vagrant-libvirt/action/forward_ports.rb
Overview
Cleans up ssh-forwarded ports on VM halt/destroy.
Constant Summary collapse
- @@lock =
Mutex.new
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, _env) ⇒ ClearForwardedPorts
constructor
A new instance of ClearForwardedPorts.
Constructor Details
#initialize(app, _env) ⇒ ClearForwardedPorts
Returns a new instance of ClearForwardedPorts.
162 163 164 165 166 167 |
# File 'lib/vagrant-libvirt/action/forward_ports.rb', line 162 def initialize(app, _env) @app = app @logger = Log4r::Logger.new( 'vagrant_libvirt::action::clear_forward_ports' ) end |
Instance Method Details
#call(env) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/vagrant-libvirt/action/forward_ports.rb', line 169 def call(env) @env = env if ssh_pids.any? env[:ui].info I18n.t( 'vagrant.actions.vm.clear_forward_ports.deleting' ) ssh_pids.each do |tag| next unless ssh_pid?(tag[:pid]) @logger.debug "Killing pid #{tag[:pid]}" kill_cmd = '' if tag[:port] <= 1024 kill_cmd << 'sudo ' # add sudo prefix end kill_cmd << "kill #{tag[:pid]}" @@lock.synchronize do system(kill_cmd) end end @logger.info 'Removing ssh pid files' remove_ssh_pids else @logger.info 'No ssh pids found' end @app.call env end |