From 36e35b67bb69da57e1c75356606e82924a1ca310 Mon Sep 17 00:00:00 2001 From: Rodion Tikunov Date: Thu, 14 Jul 2016 16:51:52 +0300 Subject: [PATCH] Script for setting up deployed_before atribute MOS versions <=7.0 should prevent `stop deployment` operation when environment has already deployed. This requires that clusters have `deployed_before` atribute in generated attributes of environment. This script sets deployed_before in True value for all environments. This script should be run on master node. Change-Id: I554488217759cfedd3ce69af032b0e9426df6fb6 Related-Bug: #1529691 --- bugs/1529691/set_deployed_before.py | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 bugs/1529691/set_deployed_before.py diff --git a/bugs/1529691/set_deployed_before.py b/bugs/1529691/set_deployed_before.py new file mode 100755 index 0000000..49709dd --- /dev/null +++ b/bugs/1529691/set_deployed_before.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +import json +import subprocess + + +class DockerUtils(): + def run_psql_in_container(self, sql, db): + ret = [] + cmd = ["dockerctl", + "shell", + "postgres", + "sudo", + "-u", + "postgres", + "psql", + db, + "--tuples-only", + "--no-align", + "-c", + sql] + results = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True) + + for l in results.stdout: + ret.append(l.strip()) + + return ret + + +class NailgunEditor(DockerUtils): + db = "nailgun" + + def add_deployed_before_flag(self): + values = [] + for line in self.run_psql_in_container( + "select id, generated from attributes;", self.db): + c_id, c_data = line.split("|", 1) + data = json.loads(c_data) + data["deployed_before"] = {"value": True} + values.append("({0}, '{1}')".format(c_id, json.dumps(data))) + + if values: + self.run_psql_in_container( + 'update attributes as a set generated = b.generated ' + 'from (values {0}) as b(id, generated) ' + 'where a.id = b.id;'.format(','.join(values)), + self.db) + + +if __name__ == "__main__": + ne = NailgunEditor() + ne.add_deployed_before_flag() + print("deployed_before flag successfully added") -- 2.45.2