mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-03-10 12:58:27 +03:00
cli: add --network passt,portForward=8080:80
convenience syntax
Roughly mirroring `podman run -p` syntax. Examples: --network passt,portForward=8080:80 --network passt,portForward0=7000-8000/udp,portForward1=127.0.0.1:2222:22 Resolves: https://github.com/virt-manager/virt-manager/issues/751 Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
2f8f0e8151
commit
17f171cdb7
@ -1341,6 +1341,20 @@ Some example suboptions:
|
||||
|
||||
For ``HOSTDEV`` format, see ``--hostdev`` documentation
|
||||
|
||||
``portForward=[ADDRESS:]HOSTPORT[:GUESTPORT][/PROTO]``
|
||||
Simpler option for specifying port forwarding with
|
||||
``--network passt`` networks. Roughly matches ``podman run -p``
|
||||
syntax. HOSTPORT can be a represented as a range like ``7000-8000``, but
|
||||
GUESTPORT can only be a single port. If GUESTPORT is not provided, host
|
||||
and guest ports are assumed to match.
|
||||
|
||||
Examples:
|
||||
|
||||
.. code-block::
|
||||
|
||||
--network passt,portForward=8080:80 \
|
||||
--network passt,portForward0=7000-8000/udp,portForward1=127.0.0.1:2222:22 \
|
||||
|
||||
|
||||
GRAPHICS OPTIONS
|
||||
================
|
||||
|
@ -632,6 +632,44 @@
|
||||
<range start="2022" to="22"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
<interface type="user">
|
||||
<backend type="passt"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
<portForward proto="tcp">
|
||||
<range start="8080" to="80"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
<interface type="user">
|
||||
<backend type="passt"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
<portForward proto="tcp">
|
||||
<range start="8080"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
<interface type="user">
|
||||
<backend type="passt"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
<portForward proto="udp">
|
||||
<range start="7000" end="8000"/>
|
||||
</portForward>
|
||||
<portForward proto="tcp" address="127.0.0.1">
|
||||
<range start="2222" to="22"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
<interface type="user">
|
||||
<backend type="passt"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
<portForward proto="tcp" address="2001:db8:ac10:fd01::1:10">
|
||||
<range start="3000" end="4000" to="30"/>
|
||||
</portForward>
|
||||
<portForward proto="tcp" address="127.0.0.1">
|
||||
<range start="5000" end="6000" to="5"/>
|
||||
</portForward>
|
||||
</interface>
|
||||
<interface type="hostdev">
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="virtio"/>
|
||||
|
@ -653,6 +653,10 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
||||
--network user,address.type=ccw,address.cssid=0xfe,address.ssid=0,address.devno=01,boot.order=15,boot.loadparm=SYSTEM1
|
||||
--network model=vmxnet3
|
||||
--network backend.type=passt,backend.logFile=/tmp/foo.log,portForward0.proto=tcp,portForward0.address=192.168.10.10,portForward0.dev=eth0,portForward0.range0.start=4000,portForward0.range0.end=5000,portForward0.range0.to=10000,portForward0.range0.exclude=no,portForward0.range1.start=6000,portForward1.proto=tcp,portForward1.range0.start=2022,portForward1.range0.to=22
|
||||
--network passt,portForward=8080:80
|
||||
--network passt,portForward=8080
|
||||
--network passt,portForward0=7000-8000/udp,portForward1=127.0.0.1:2222:22
|
||||
--network passt,portForward0=2001:db8:ac10:fd01::1:10:3000-4000:30,portForward1=127.0.0.1:5000-6000:5
|
||||
--network type=hostdev,source.address.type=pci,source.address.domain=0x0,source.address.bus=0x00,source.address.slot=0x07,source.address.function=0x0
|
||||
--network hostdev=pci_0000_00_09_0
|
||||
--network hostdev=0:0:4.0
|
||||
|
@ -3888,6 +3888,9 @@ class ParserNetwork(VirtCLIParser):
|
||||
def set_type_cb(self, inst, val, virtarg):
|
||||
if val == "default":
|
||||
inst.set_default_source()
|
||||
elif val == "passt":
|
||||
inst.type = "user"
|
||||
inst.backend.type = "passt"
|
||||
else:
|
||||
inst.type = val
|
||||
|
||||
@ -3919,6 +3922,38 @@ class ParserNetwork(VirtCLIParser):
|
||||
cb = self._make_find_inst_cb(cliarg, list_propname)
|
||||
return cb(inst, *args, **kwargs)
|
||||
|
||||
def set_port_forward_pretty(self, inst, val, _virtarg):
|
||||
if "/" in val:
|
||||
val, proto = val.rsplit("/", 1)
|
||||
else:
|
||||
proto = "tcp"
|
||||
|
||||
if ":" in val:
|
||||
val, port_to = val.rsplit(":", 1)
|
||||
else:
|
||||
port_to = None
|
||||
|
||||
if ":" in val:
|
||||
host, val = val.rsplit(":", 1)
|
||||
else:
|
||||
host = None
|
||||
|
||||
if "-" in val:
|
||||
port_start, port_end = val.rsplit("-", 1)
|
||||
else:
|
||||
port_start = val
|
||||
port_end = None
|
||||
|
||||
if not inst.range:
|
||||
inst.range.add_new()
|
||||
rangeobj = inst.range[0]
|
||||
|
||||
inst.proto = proto
|
||||
inst.address = host
|
||||
rangeobj.start = port_start
|
||||
rangeobj.end = port_end
|
||||
rangeobj.to = port_to
|
||||
|
||||
def set_hostdev_cb(self, inst, val, virtarg):
|
||||
val = _lookupNodedevFromString(inst.conn, val)
|
||||
inst.set_from_nodedev(val)
|
||||
@ -3996,6 +4031,9 @@ class ParserNetwork(VirtCLIParser):
|
||||
find_inst_cb=cls.range_find_inst_cb)
|
||||
cls.add_arg("portForward[0-9]*.range[0-9]*.exclude", "exclude",
|
||||
is_onoff=True, find_inst_cb=cls.range_find_inst_cb)
|
||||
cls.add_arg("portForward[0-9]*", None, lookup_cb=None,
|
||||
cb=cls.set_port_forward_pretty,
|
||||
find_inst_cb=cls.portForward_find_inst_cb)
|
||||
|
||||
|
||||
######################
|
||||
|
Loading…
x
Reference in New Issue
Block a user