slapos/recipe/postgresql: Do not leave half-installed postgresql instance
authorKirill Smelkov <kirr@nexedi.com>
Wed, 4 Nov 2015 08:59:36 +0000 (11:59 +0300)
committerKirill Smelkov <kirr@nexedi.com>
Wed, 9 Dec 2015 16:48:50 +0000 (19:48 +0300)
commitb7f00defbd85bab0ea4f3b5c91360fe548230e52
treeb2ea931bb2f9d6545c2cc4fd8473f1f0a0ce0a16
parentaeade2490994e714f248d4c8bb5005d01841783f
slapos/recipe/postgresql: Do not leave half-installed postgresql instance

In case there are errors when creating cluster / setting up its
configuration files, currently we leave pgsql database left
half-installed and next time instantiation runs do not do anything,
because os.path.exists(pgdata) is already true.

I've personally hit this situation via providing ipv4 and ipv6
parameters as strings and the recipe wanted to do `ipv4.join(ipv6)` but this
works only for sets and raises for strings.

What is worse is that the above error becomes hidden in our default
setup, because webrunner tries to do instantiation _several_ times, and
on the second run instantiation succeeds, because pgdata directory
already exists and recipe thinks there is nothing to do _and_ webrunner
already removed instance.log from previous run.

So do not hide errors, and if we see there are problems, remove the
wholly created pgsql database directory.

/cc @kazuhiko, @jerome
/proposed-for-review on nexedi/slapos!29
slapos/recipe/postgres/__init__.py