[elbe-devel] [PATCH] config/soap: socket timeout env variable
Torben Hohn
torben.hohn at linutronix.de
Fri Feb 7 12:09:43 CET 2020
On Sun, Feb 02, 2020 at 09:04:50PM +0100, bage at linutronix.de wrote:
> From: Bastian Germann <bage at linutronix.de>
>
> Introduce an environment variable ELBE_SOAPTIMEOUT_SECS that controls the SOAP
> client's socket timeout which defaults to 90 seconds. Keep the default for the
> environment variable as well.
>
> Signed-off-by: Bastian Germann <bage at linutronix.de>
Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>
> ---
> elbepack/config.py | 4 ++++
> elbepack/soapclient.py | 3 ++-
> elbepack/updated.py | 3 ++-
> 3 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/elbepack/config.py b/elbepack/config.py
> index 7ef2910f9..631e33a70 100644
> --- a/elbepack/config.py
> +++ b/elbepack/config.py
> @@ -13,6 +13,7 @@ class Config(dict):
> dict.__init__(self)
> self['soaphost'] = "localhost"
> self['soapport'] = "7587"
> + self['soaptimeout'] = 90
> self['sshport'] = "5022"
> self['elbeuser'] = "root"
> self['elbepass'] = "foo"
> @@ -28,6 +29,9 @@ class Config(dict):
> if 'ELBE_SOAPHOST' in os.environ:
> self['soaphost'] = os.environ['ELBE_SOAPHOST']
>
> + if 'ELBE_SOAPTIMEOUT_SECS' in os.environ:
> + self['soaptimeout'] = int(os.environ['ELBE_SOAPTIMEOUT_SECS'])
> +
> if 'ELBE_USER' in os.environ:
> self['elbeuser'] = os.environ['ELBE_USER']
>
> diff --git a/elbepack/soapclient.py b/elbepack/soapclient.py
> index d5b18c2ca..1ecaee0ba 100644
> --- a/elbepack/soapclient.py
> +++ b/elbepack/soapclient.py
> @@ -28,6 +28,7 @@ import deb822 # package for dealing with Debian related data
> from suds.client import Client
> from suds import WebFault
>
> +from elbepack.config import cfg
> from elbepack.filesystem import Filesystem
> from elbepack.elbexml import ElbeXML, ValidationMode
> from elbepack.version import elbe_version, elbe_initvm_packagelist
> @@ -65,7 +66,7 @@ class ElbeSoapClient(object):
> while self.control is None:
> self.retries += 1
> try:
> - self.control = Client(self.wsdl)
> + self.control = Client(self.wsdl, timeout=cfg['soaptimeout'])
> except socket.error as e:
> if self.retries > retries:
> raise e
> diff --git a/elbepack/updated.py b/elbepack/updated.py
> index e341848b2..f7bf939f8 100644
> --- a/elbepack/updated.py
> +++ b/elbepack/updated.py
> @@ -33,6 +33,7 @@ import apt_pkg
>
> from elbepack.aptprogress import (ElbeInstallProgress,
> ElbeAcquireProgress, ElbeOpProgress)
> +from elbepack.config import cfg
> from elbepack.egpg import unsign_file
> from elbepack.treeutils import etree
> from elbepack.shellhelper import CommandError, system
> @@ -150,7 +151,7 @@ class UpdateService (ServiceBase):
>
> @rpc(String)
> def register_monitor(self, wsdl_url):
> - self.app.status.monitor = Client(wsdl_url)
> + self.app.status.monitor = Client(wsdl_url, timeout=cfg['soaptimeout'])
> self.app.status.log("connection established")
>
>
> --
> 2.20.1
>
--
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99
Hinweise zum Datenschutz finden Sie hier (Informations on data privacy
can be found here): https://linutronix.de/kontakt/Datenschutz.php
Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen |
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner
More information about the elbe-devel
mailing list