bridge: bridge can now be set using environment variable:

The `LIBERVIA_BRIDGE_NAME` environment variable can now be used to specify the bridge to
use. If set and different from empty string, the environment has precedence over config
file value.

For `pb` bridge, the following environment variable can also be used:

- LIBERVIA_BRIDGE_PB_CONNECTION_TYPE
- LIBERVIA_BRIDGE_PB_HOST
- LIBERVIA_BRIDGE_PB_PORT
This commit is contained in:
Goffi 2021-08-28 15:26:02 +02:00
commit 547eb9feba
2 changed files with 47 additions and 61 deletions

View file

@ -19,6 +19,7 @@
import dataclasses
from functools import partial
from pathlib import Path
from twisted.spread import jelly, pb
from twisted.internet import reactor
@ -106,12 +107,8 @@ class Bridge(object):
log.info("Init Perspective Broker...")
self.root = PBRoot()
conf = config.parseMainConf()
conn_type = config.getConfig(
conf,
"",
"bridge_pb_connection_type",
"unix_socket"
)
getConf = partial(config.getConf, conf, "bridge_pb", "")
conn_type = getConf("connection_type", "unix_socket")
if conn_type == "unix_socket":
local_dir = Path(config.getConfig(conf, "", "local_dir")).resolve()
socket_path = local_dir / "bridge_pb"
@ -120,12 +117,7 @@ class Bridge(object):
str(socket_path), pb.PBServerFactory(self.root), mode=0o600
)
elif conn_type == "socket":
port = int(config.getConfig(
conf,
"",
"bridge_pb_port",
8789
))
port = int(getConf("port", 8789))
log.info(f"using TCP Socket at port {port}")
reactor.listenTCP(port, pb.PBServerFactory(self.root))
else:

View file

@ -140,29 +140,15 @@ class Bridge(object):
def bridgeConnect(self, callback, errback):
factory = pb.PBClientFactory()
conf = config.parseMainConf()
conn_type = config.getConfig(
conf,
"",
"bridge_pb_connection_type",
"unix_socket"
)
getConf = partial(config.getConf, conf, "bridge_pb", "")
conn_type = getConf("connection_type", "unix_socket")
if conn_type == "unix_socket":
local_dir = Path(config.getConfig(conf, "", "local_dir")).resolve()
socket_path = local_dir / "bridge_pb"
reactor.connectUNIX(str(socket_path), factory)
elif conn_type == "socket":
host = int(config.getConfig(
conf,
"",
"bridge_pb_host",
"localhost"
))
port = int(config.getConfig(
conf,
"",
"bridge_pb_port",
8789
))
host = getConf("host", "localhost")
port = int(getConf("port", 8789))
reactor.connectTCP(host, port, factory)
else:
raise ValueError(f"Unknown pb connection type: {conn_type!r}")