From: Rodion Tikunov Date: Thu, 14 Jul 2016 13:51:52 +0000 (+0300) Subject: Script for setting up deployed_before atribute X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=36e35b67bb69da57e1c75356606e82924a1ca310;p=tools%2Fsustaining.git 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 --- 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")