[Kimchi-devel] [PATCH] Bug #443: Do not crash Kimchi when federation is enabled and openslp is not installed

Aline Manera alinefm at linux.vnet.ibm.com
Mon Dec 8 17:00:59 UTC 2014


Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
 src/kimchi.conf.in        | 2 +-
 src/kimchi/model/peers.py | 7 +++++--
 src/kimchi/utils.py       | 2 +-
 src/kimchid.in            | 5 +++--
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/kimchi.conf.in b/src/kimchi.conf.in
index 003ce4a..9f62ac0 100644
--- a/src/kimchi.conf.in
+++ b/src/kimchi.conf.in
@@ -27,7 +27,7 @@
 #environment = production
 
 # Federation feature: register Kimchi server on openSLP and discover peers
-# at the same network
+# in the same network. Check README-federation for more details.
 #federation = off
 
 # Max request body size in KB, default value is 4GB
diff --git a/src/kimchi/model/peers.py b/src/kimchi/model/peers.py
index 1bf74cb..a9f5fcd 100644
--- a/src/kimchi/model/peers.py
+++ b/src/kimchi/model/peers.py
@@ -38,7 +38,7 @@ class PeersModel(object):
         cmd = ["slptool", "register",
                "service:kimchid://%s" % self.url]
         out, error, ret = run_command(cmd)
-        if len(out) != 0:
+        if out and len(out) != 0:
             kimchi_log.error("Unable to register server on openSLP."
                              " Details: %s" % out)
 
@@ -47,9 +47,12 @@ class PeersModel(object):
         if config.get("server", "federation") == "off":
             return []
 
-        peers = []
         cmd = ["slptool", "findsrvs", "service:kimchid"]
         out, error, ret = run_command(cmd)
+        if ret != 0:
+            return []
+
+        peers = []
         for server in out.strip().split("\n"):
             match = re.match("service:kimchid://(.*?),.*", server)
             peer = match.group(1)
diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
index 68415dc..989e370 100644
--- a/src/kimchi/utils.py
+++ b/src/kimchi/utils.py
@@ -224,7 +224,7 @@ def run_command(cmd, timeout=None):
     except Exception as e:
         msg = "Failed to run command: %s." % " ".join(cmd)
         msg = msg if proc is None else msg + "\n  error code: %s."
-        kimchi_log.error("%s\n  %s", msg, e)
+        kimchi_log.error("%s %s", msg, e)
 
         if proc:
             return out, error, proc.returncode
diff --git a/src/kimchid.in b/src/kimchid.in
index 0746ba6..0a8dc1f 100644
--- a/src/kimchid.in
+++ b/src/kimchid.in
@@ -70,8 +70,9 @@ def main(options):
     parser.add_option('--environment', default=runningEnv,
                       help="Running environment of kimchi server")
     parser.add_option('--federation', default=federation,
-                      help="Register and discover Kimchi peers at the same "
-                           "network using openSLP")
+                      help="Register and discover Kimchi peers in the same "
+                           "network using openSLP. Check README-federation for"
+                           " more details.")
     parser.add_option('--test', action='store_true',
                       help="Run server in mock model")
     (options, args) = parser.parse_args()
-- 
1.9.3




More information about the Kimchi-devel mailing list