Add function to cleanup pre-release repos
authorHasan Wan <hasan.wan@intel.com>
Thu, 6 Jun 2013 07:09:14 +0000 (15:09 +0800)
committerHasan Wan <hasan.wan@intel.com>
Thu, 6 Jun 2013 07:16:12 +0000 (15:16 +0800)
Change-Id: I51f4061baebd32b71574e19b5721a42688ecf36d
Signed-off-by: Hasan Wan <hasan.wan@intel.com>
job_pre_release_obs.py

index 4b3d67e..ae4c007 100755 (executable)
@@ -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)