vaguerent/plugins/providers/docker/action/forwarded_ports.rb

37 lines
978 B
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
module VagrantPlugins
module DockerProvider
module Action
class ForwardedPorts
def initialize(app, env)
@app = app
end
# Converts the `ports` docker provider param into proper network configs
# of type :forwarded_port
def call(env)
env[:machine].provider_config.ports.each do |p|
host_ip = nil
protocol = "tcp"
host, guest = p.split(":", 2)
if guest.include?(":")
host_ip = host
host, guest = guest.split(":", 2)
end
guest, protocol = guest.split("/", 2) if guest.include?("/")
env[:machine].config.vm.network "forwarded_port",
host: host.to_i, guest: guest.to_i,
host_ip: host_ip,
protocol: protocol
end
@app.call(env)
end
end
end
end
end