From f650173105fb5bac0074ef03b8d2a649ea35fd13 Mon Sep 17 00:00:00 2001 From: Nicolas Wavrant <nicolas.wavrant@nexedi.com> Date: Tue, 13 Sep 2016 11:01:31 +0200 Subject: [PATCH] free_port: is more slapos-friendly: restart until a valid port is returned --- slapos/recipe/free_port.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/slapos/recipe/free_port.py b/slapos/recipe/free_port.py index 35d96508b..61f13eb88 100644 --- a/slapos/recipe/free_port.py +++ b/slapos/recipe/free_port.py @@ -53,8 +53,12 @@ class Recipe(object): with open(buildout['buildout']['installed']) as config_file: parser.readfp(config_file) port = parser.get(name, 'port') - self.options['port'] = port - return + # Port can be 0 in case of upgrade: some old service still runs on port, + # so 0 is returned by default. Then, on next run, this recipe is processed + # again until a correct value is returned + if port != '0': + self.options['port'] = port + return except (IOError, ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass -- 2.30.9