mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-27 19:16:29 +00:00
Cleanup network mode & fix port mapping (#166)
* Cleanup network mode & fix port mapping * Fix lint
This commit is contained in:
parent
04514a9f5c
commit
3525f5a02f
@ -179,7 +179,7 @@ class Addon(object):
|
|||||||
@property
|
@property
|
||||||
def ports(self):
|
def ports(self):
|
||||||
"""Return ports of addon."""
|
"""Return ports of addon."""
|
||||||
if self.network_mode or ATTR_PORTS not in self._mesh:
|
if self.host_network or ATTR_PORTS not in self._mesh:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if not self.is_installed or \
|
if not self.is_installed or \
|
||||||
@ -222,11 +222,9 @@ class Addon(object):
|
|||||||
return RE_WEBUI.sub(r"\g<1>{}\g<3>".format(real_port), webui)
|
return RE_WEBUI.sub(r"\g<1>{}\g<3>".format(real_port), webui)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def network_mode(self):
|
def host_network(self):
|
||||||
"""Return network mode of addon."""
|
"""Return True if addon run on host network."""
|
||||||
if self._mesh[ATTR_HOST_NETWORK]:
|
return self._mesh[ATTR_HOST_NETWORK]
|
||||||
return 'host'
|
|
||||||
return None
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def devices(self):
|
def devices(self):
|
||||||
|
@ -121,7 +121,7 @@ class APIAddons(object):
|
|||||||
ATTR_DETACHED: addon.is_detached,
|
ATTR_DETACHED: addon.is_detached,
|
||||||
ATTR_BUILD: addon.need_build,
|
ATTR_BUILD: addon.need_build,
|
||||||
ATTR_NETWORK: addon.ports,
|
ATTR_NETWORK: addon.ports,
|
||||||
ATTR_HOST_NETWORK: addon.network_mode == 'host',
|
ATTR_HOST_NETWORK: addon.host_network,
|
||||||
ATTR_PRIVILEGED: addon.privileged,
|
ATTR_PRIVILEGED: addon.privileged,
|
||||||
ATTR_DEVICES: self._pretty_devices(addon),
|
ATTR_DEVICES: self._pretty_devices(addon),
|
||||||
ATTR_LOGO: addon.with_logo,
|
ATTR_LOGO: addon.with_logo,
|
||||||
|
@ -64,6 +64,18 @@ class DockerAddon(DockerInterface):
|
|||||||
return devices
|
return devices
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ports(self):
|
||||||
|
"""Filter None from addon ports."""
|
||||||
|
if not self.addon.ports:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
container_port: host_port
|
||||||
|
for container_port, host_port in self.addon.ports.items()
|
||||||
|
if host_port
|
||||||
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def tmpfs(self):
|
def tmpfs(self):
|
||||||
"""Return tmpfs for docker add-on."""
|
"""Return tmpfs for docker add-on."""
|
||||||
@ -79,6 +91,13 @@ class DockerAddon(DockerInterface):
|
|||||||
'homeassistant': self.docker.network.gateway,
|
'homeassistant': self.docker.network.gateway,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def network_mode(self):
|
||||||
|
"""Return network mode for addon."""
|
||||||
|
if self.addon.host_network:
|
||||||
|
return 'host'
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def volumes(self):
|
def volumes(self):
|
||||||
"""Generate volumes for mappings."""
|
"""Generate volumes for mappings."""
|
||||||
@ -141,8 +160,8 @@ class DockerAddon(DockerInterface):
|
|||||||
name=self.name,
|
name=self.name,
|
||||||
hostname=self.hostname,
|
hostname=self.hostname,
|
||||||
detach=True,
|
detach=True,
|
||||||
network_mode=self.addon.network_mode,
|
network_mode=self.network_mode,
|
||||||
ports=self.addon.ports,
|
ports=self.ports,
|
||||||
extra_hosts=self.network_mapping,
|
extra_hosts=self.network_mapping,
|
||||||
devices=self.devices,
|
devices=self.devices,
|
||||||
cap_add=self.addon.privileged,
|
cap_add=self.addon.privileged,
|
||||||
|
@ -61,7 +61,7 @@ class DockerNetwork(object):
|
|||||||
|
|
||||||
Need run inside executor.
|
Need run inside executor.
|
||||||
"""
|
"""
|
||||||
ipv4 = str(ipv4) if ipv4 else ""
|
ipv4 = str(ipv4) if ipv4 else None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.network.connect(container, aliases=alias, ipv4_address=ipv4)
|
self.network.connect(container, aliases=alias, ipv4_address=ipv4)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user