37 lines
978 B
Ruby
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
|