From 3663af14347738c6dc0978ecddb0d984e89ba60d Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 26 Oct 2012 14:17:13 +0530 Subject: [PATCH] cloud-setup-databases: modify try-except-finally for < python 2.4 Make cloud-setup-databases compatible to python 2.4 and before. Add code Prasanna Santhanam Partially revert a6dcd7af4962a584f46d9b7271e2c225618624ed which removed the fix for CLOUDSTACK-199: Fix how cloud-setup-databases parses Patch splits by right most @ in supplied argument to get user:password and host substrings. Less than python <2.4 the following is unsupported and produces a SyntaxError. try: ...code ... except ValueError: ...code ... finally: ...code ... Workaround is the following try: try: ...code ... except ValueError: ...code ... finally: Credits to Prasanna Santhanam Signed-off-by: Rohit Yadav --- setup/bindir/cloud-setup-databases.in | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/setup/bindir/cloud-setup-databases.in b/setup/bindir/cloud-setup-databases.in index 3368fa0b25f..bd5a0ba11f3 100755 --- a/setup/bindir/cloud-setup-databases.in +++ b/setup/bindir/cloud-setup-databases.in @@ -500,8 +500,16 @@ for example: self.errorAndExit("There are more than one parameters for user:password@hostname (%s)"%self.args) arg = self.args[0] - stuff = arg.split("@", 1) - if len(stuff) == 1: stuff.append("localhost") + try: + try: + splitIndex = arg.rindex('@') + except ValueError: + # If it failed to find @, use host=localhost + splitIndex = len(arg) + arg += "@localhost" + finally: + stuff = [arg[:splitIndex], arg[splitIndex+1:]] + self.user,self.password = parseUserAndPassword(stuff[0]) self.host,self.port = parseHostInfo(stuff[1])