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

Daniel Henrique Barboza danielhb at linux.vnet.ibm.com
Mon Dec 8 18:09:00 UTC 2014


Reviewed-by: Daniel Barboza <danielhb at linux.vnet.ibm.com>

On 12/08/2014 03:00 PM, Aline Manera wrote:
> 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()




More information about the Kimchi-devel mailing list