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 <tsp@apache.org>
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 <tsp@apache.org>

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
This commit is contained in:
Rohit Yadav 2012-10-26 14:17:13 +05:30
parent 7d15dc1d4d
commit 3663af1434

View File

@ -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])