Add job to clean up temporary project/repo
authorHasan Wan <hasan.wan@intel.com>
Fri, 2 Nov 2012 06:04:56 +0000 (14:04 +0800)
committerLin Yang <lin.a.yang@intel.com>
Thu, 28 Feb 2013 07:44:18 +0000 (15:44 +0800)
Change-Id: I6b014287f3357f4fe08d74c793c1bbdbe6f400eb
Signed-off-by: Hasan Wan <hasan.wan@intel.com>
common/buildservice.py
job_pre_release.py
job_repomaker.py
job_reviewrepo_cleanup.py [new file with mode: 0755]

index f53d43b..db5e7cb 100644 (file)
@@ -1289,6 +1289,12 @@ class TempBuildService():
     def get_repostatus(self):
         return self.bs.getRepoState(self.project)
 
+    def is_published(self):
+        try:
+            return set(self.get_repostatus().values()) == set(['published'])
+        except:
+            return False
+
     def get_abs_repopath(self):
         # FIXME: hard code here
         return "/srv/obs/repos/%s" %(self.project.replace(":", ":/"))
index ca1c53c..7ac1225 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # vim: ai ts=4 sts=4 et sw=4
 
-"""This script will do policy check when patch is created in gerrit.
+"""This job will help submit the changes to a temporary OBS project when SR created.
 """
 
 from common.envparas import export
@@ -32,10 +32,8 @@ envparas = ['JENKINS_HOME',
 
 export(envparas, locals())
 
-GIT_URL = 'git://%s' % (GERRIT_HOSTNAME)
+GIT_URL = 'ssh://%s@%s:%s' % (GERRIT_USERNAME, GERRIT_HOSTNAME, GERRIT_SSHPORT)
 
-
-    
 if __name__ == '__main__':
 
     print '---[JOB STARTED]----------------------------------------'
index d8a3183..a85fb2e 100755 (executable)
@@ -17,6 +17,7 @@ from common.envparas import export
 from common.buildservice import BuildService, TempBuildService
 import repomaker
 import base64
+import time
 
 from images import generate_images_info, get_ks_list, set_relative_uri
 
@@ -176,6 +177,8 @@ if __name__ == "__main__":
         server_conf.repos_conf = temp_conf_fn
         # Disable the project build to save resource
         tempbuild=TempBuildService(temp_repo_define_dict['Project'], OBS_API_URL, PATH_OSCRC)
+        time.sleep(10)
+        assert(tempbuild.is_published())
         tempbuild.disable_build(temp_repo_define_dict['SandboxOf'], OBS_USERNAME)
 
     builds_dir = server_conf.builds
diff --git a/job_reviewrepo_cleanup.py b/job_reviewrepo_cleanup.py
new file mode 100755 (executable)
index 0000000..003a76b
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+# vim: ai ts=4 sts=4 et sw=4
+
+"""This script will cleanup the temporary project/repo when SR closed.
+"""
+
+from common.envparas import export
+from common.buildservice import BuildService
+import os
+
+envparas = ['JENKINS_HOME',
+            'WORKSPACE',
+            'GIT_PROJECT',
+            'GIT_TAG',
+            'OBS_REQ_PRJ_SRC',
+            'OBS_REQ_PRJ',
+            'OBS_REQ_PKG',
+            'OBS_REQ_ID',
+            'OBS_API_URL',
+            'PATH_BUILDS',
+            'PATH_OSCRC',
+            'OBS_OSCRC_PATH',
+            'COMMITID',
+            'OBS_REQ_WHO',
+            'GERRIT_HOSTNAME',
+            'GERRIT_USERNAME',
+            'GERRIT_SSHPORT',
+            'GIT_CACHE_DIR']
+
+export(envparas, locals())
+
+GIT_URL = 'ssh://%s@%s:%s' % (GERRIT_USERNAME, GERRIT_HOSTNAME, GERRIT_SSHPORT)
+
+
+def search_published_repo(repo_path_base, project,  sr_id):
+
+    reviewrepo_base = os.path.join(repo_path_base,'pre-release', project)
+    if os.path.isdir(repo_path_base):
+        for dir_name in os.listdir(reviewrepo_base):
+            if dir_name.endswith("sr.%s" %sr_id):
+                return os.path.join(reviewrepo_base, dir_name)
+    else:
+        print "WARN: reviewrepo %s doesn't exist" %reviewrepo_base
+
+if __name__ == '__main__':
+
+    print '---[JOB STARTED]----------------------------------------'
+
+
+    obs_project = "%s:prerelease:%s:%s" %( OBS_REQ_PRJ, OBS_REQ_ID, OBS_REQ_PKG)
+    bs = BuildService(OBS_API_URL, PATH_OSCRC)
+    bs.deleteProject(obs_project)
+    print "OBS Project %s  deleted" %obs_project
+
+    reviewrepo_path = search_published_repo(PATH_BUILDS, OBS_REQ_PKG, OBS_REQ_ID)
+    if reviewrepo_path:
+        print "Removing temporary repo: %s" %reviewrepo_path
+        os.system("rm -rf %s" %reviewrepo_path)
+    else:
+        print "WARN: Temporary %s has been removed" %reviewrepo_path