From 9d1c3114f6b71e4df199e890de54d657873600c6 Mon Sep 17 00:00:00 2001 From: pengtao Date: Tue, 5 Nov 2019 14:23:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0keys=20=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/deploy_keys.py | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/deploy/deploy_keys.py b/deploy/deploy_keys.py index 3ca7b1b..eb3c776 100644 --- a/deploy/deploy_keys.py +++ b/deploy/deploy_keys.py @@ -2,6 +2,7 @@ from ops.mmysql import MysqlBase from ops.mansible import AnsibleAPI from ops.mlog import define_logger +from ops.common import run_cmd import logging import datetime import os @@ -29,10 +30,9 @@ class DeployKeys: def run(self): svn_path, ipadr = self.get_config() - if svn_path: - key_path = f"{svn_path}/keys" + if ipadr: args = dict() - tar_file = self.build_svn_tar(key_path) + tar_file = self.build_svn_tar() if tar_file: hostfile = self.build_hostfile() args['hostfile'] = hostfile @@ -57,7 +57,6 @@ class DeployKeys: mydb = MysqlBase(**dbargs) data = mydb.query(sql) ip_addr = list() - pdb.set_trace() if data: for line in data: try: @@ -70,31 +69,32 @@ class DeployKeys: return (svn_path, ip_addr) - def build_svn_tar(self, svn_path): + def build_svn_tar(self): try: log.info("svn export config start") - s = svn.remote.RemoteClient(svn_path) - if self.svn_paths: - shutil.rmtree(self.svn_paths) - - s.export(self.svn_paths, force=True) - log.info("svn export config success") + pdb.set_trace() + cmd = f"cd {self.svn_paths} && svn up" + status, output = run_cmd(cmd) + if status: + log.info("svn export config success") + else: + raise Exception("update svn failed!") except Exception: log.error(f"get remote {self.project} svn failed", exc_info=True) - else: - log.info("tarfile {0} config to tar.gz start".format(self.project)) - tar = tarfile.open(self.svn_paths + '.tar.gz', 'w:gz') - os.chdir(self.svn_paths) + + project_paths = os.path.join(self.svn_paths, self.project) + tar = tarfile.open(project_paths + '.tar.gz', 'w:gz') + os.chdir(self.project_paths) for f in os.listdir(self.svn_paths): tar.add(f) tar.close() # 判断是否有生成tar包 - list_dir = os.listdir(self.svn_base) + list_dir = os.listdir(project_paths) tar_files = list() for i in list_dir: - if i == "{0}.tar.gz".format(self.project) and os.path.isfile(os.path.join(self.basedir, i)): - tar_files.append(os.path.join(self.basedir, i)) + if i == "{0}.tar.gz".format(self.project) and os.path.isfile(os.path.join(project_paths, i)): + tar_files.append(os.path.join(project_paths, i)) if len(tar_files) == 1: log.info("tarfile {0} config to tar.gz success".format(self.project)) return tar_files @@ -111,6 +111,7 @@ class DeployKeys: return host_files def ansible_deploy(self, args): + pdb.set_trace() an = AnsibleAPI(args['hostfile']) data = {'dest_filename': 'x', 'source': 'x', 'project': 'x'} resule = an.run_playbook('deploy_keys.yml', **data)