From 7def98d7286ca66923bdf804f9d9ec4c0c173464 Mon Sep 17 00:00:00 2001 From: Hasan Wan Date: Thu, 6 Jun 2013 15:09:14 +0800 Subject: [PATCH] Add function to cleanup pre-release repos Change-Id: I51f4061baebd32b71574e19b5721a42688ecf36d Signed-off-by: Hasan Wan --- job_pre_release_obs.py | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/job_pre_release_obs.py b/job_pre_release_obs.py index 4b3d67e..ae4c007 100755 --- a/job_pre_release_obs.py +++ b/job_pre_release_obs.py @@ -139,6 +139,20 @@ def make_repo(project, repo, backenddb): os.path.join(data['prerelease_dir'], build_id) ) +def get_published_repo(repo_path_base, time_stamp): + """ Search publised repository + Args: + repo_path_base (str): the repo location on file systems + time_stamp (str): the time stamp of sbumit tag + """ + ret_list = [] + if os.path.isdir(repo_path_base): + for dir_name in os.listdir(repo_path_base): + if dir_name.endswith(time_stamp): + ret_list.append(os.path.join(repo_path_base, dir_name)) + + return ret_list + def main(name, action): """Script entry point. Parameters: @@ -156,11 +170,12 @@ def main(name, action): project = content.get("project") build = BuildService(obs_api, obs_user, obs_passwd) + # Init backend database + redis_host = os.getenv("REDIS_HOST") + redis_port = int(os.getenv("REDIS_PORT")) + backenddb = BackendDB(redis_host, redis_port) + if action == 'create_images': - # Init backend database - redis_host = os.getenv("REDIS_HOST") - redis_port = int(os.getenv("REDIS_PORT")) - backenddb = BackendDB(redis_host, redis_port) repo = content.get("repo") # Check whether all the repos published, we skip it if any one of @@ -176,6 +191,28 @@ def main(name, action): make_repo(project, repo, backenddb) elif action == 'cleanup': build.cleanup(project, "Cleaned up by %s" % name) + + # Get target project from prerelease project name + target_project = ':'.join(project.split(':')[:-1][3:]) + + # Get tag time stamp from prerelease project name + time_stamp = project.split(':')[-1] + + try: + data = backenddb.get_repo_data(target_project) + except BackendDBError, err: + raise LocalError("Can't get information about project '%s': %s" \ + % (project, str(err))) + + path_to_prelease_repo = os.path.join(os.getenv('PATH_REPO_BASE', '/srv/download'), + data['prerelease_dir']) + + published_repos = get_published_repo(path_to_prelease_repo, time_stamp) + + for repo in published_repos: + print 'Removing the repo: %s' %(repo) + shutil.rmtree(repo) + else: raise LocalError("Not supported method of pre_release_obs job: %s" \ % action) -- 2.7.4