Get rid of using global variables
authorEd Bartosh <eduard.bartosh@intel.com>
Tue, 5 Mar 2013 11:23:40 +0000 (13:23 +0200)
committerEd Bartosh <eduard.bartosh@intel.com>
Fri, 8 Mar 2013 13:43:01 +0000 (15:43 +0200)
Pushing variables from different contexts into global namespace is bad
practice. It leads to the code, which hard to maintain and debug.

Change-Id: I7f867b60e6f2c38fad9dafcf1654e6ce71e03392
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
job_pre_release.py

index 67f22d0..4847fdd 100755 (executable)
@@ -16,45 +16,24 @@ from common.tempbuildpkg import BuildData, RepoConf
 from common.buildtrigger import trigger_info, trigger_next
 from testprojects.prerelease import PreRelease, PreRelease2
 
-envparas = ['JENKINS_HOME',
-            'WORKSPACE',
-            'TRIGGER_INFO',
-            'OBS_API_URL',
-            'OBS_API_USERNAME',
-            'OBS_API_PASSWD',
-            'GERRIT_HOSTNAME',
-            'GERRIT_USERNAME',
-            'GERRIT_SSHPORT',
-            'PATH_BASEDIR',
-            'REPO_PUB_BASE_URL',
-            'LIVEREPO_PUB_BASE_URL',
-            'GIT_PROJECT',
-            'GIT_CACHE_DIR']
-
-export(envparas, locals())
-
-GIT_URL = 'ssh://%s@%s:%s' % (GERRIT_USERNAME, GERRIT_HOSTNAME, GERRIT_SSHPORT)
-
-def create(prerelease):
-    prjdir = os.path.join(WORKSPACE, GIT_PROJECT)
+def create(prerelease, bservice, git_project):
+    prjdir = os.path.join(os.getenv('WORKSPACE'), git_project)
 
     # clone gerrit project to local dir
-    if not clone_gitproject(GERRIT_PROJECT, prjdir):
+    if not clone_gitproject(git_project, prjdir):
         exit(1)
 
     mygit = Git(prjdir)
 
-    bs = TempBuildService(prerelease.obs_project_name(), OBS_API_URL, OBS_API_USERNAME, OBS_API_PASSWD)
+    prerelease.create(bservice, mygit)
 
-    prerelease.create(bs, mygit)
+def cleanup(prerelease, bservice):
 
-def cleanup(prerelease):
-    # TODO: clean up should co-worker with OBS 
-    bs = TempBuildService(prerelease.obs_project, OBS_API_URL, OBS_API_USERNAME, OBS_API_PASSWD)
-    bs.cleanup()
+    bservice.cleanup()
     print "OBS Project %s  deleted" %prerelease.obs_project
 
-    reviewrepo_paths = prerelease.get_published_repo(PATH_BASEDIR)
+    reviewrepo_paths = prerelease.get_published_repo(os.getenv("PATH_BASEDIR"))
+    
     if reviewrepo_paths:
         for repodir in reviewrepo_paths:
             print "Removing temporary repo: %s" %repodir
@@ -62,8 +41,7 @@ def cleanup(prerelease):
     else:
         print "WARN: Temporary repo doesn't exist!"
 
-
-def create_images(prerelease):
+def create_images(project, prerelease):
 
     linked, depended = prerelease.get_parent_project()
 
@@ -74,8 +52,8 @@ def create_images(prerelease):
 
     # SERVER configuration
     server_conf = {}
-    server_conf['REPO_PUB_BASE_URL'] = REPO_PUB_BASE_URL
-    server_conf['LIVEREPO_PUB_BASE_URL'] = LIVEREPO_PUB_BASE_URL
+    server_conf['REPO_PUB_BASE_URL'] = os.getenv('REPO_PUB_BASE_URL')
+    server_conf['LIVEREPO_PUB_BASE_URL'] = os.getenv('LIVEREPO_PUB_BASE_URL')
 
     repo = ProjectRepository(project, repo_conf = repo_config,
                              server_conf = server_conf)
@@ -130,7 +108,7 @@ def create_images(prerelease):
         ks_info[ks]['kickstart'] = '\n'.join(new_ks_lines)
 
         for index, image_info in enumerate(ks_info.values()):
-            trigger_next('%s/image_trigger_%s' %(WORKSPACE, index),
+            trigger_next('%s/image_trigger_%s' %(os.getenv('WORKSPACE'), index),
                          image_info)
 
 if __name__ == '__main__':
@@ -138,20 +116,23 @@ if __name__ == '__main__':
     action = sys.argv[1]
     print '---[JOB STARTED: %s ]-------------------------', sys.argv[1]
 
-    locals().update(trigger_info(TRIGGER_INFO))
+    content = trigger_info(os.getenv('TRIGGER_INFO'))
+    obs_api = os.getenv('OBS_API_URL')
+    obs_user = os.getenv('OBS_API_USERNAME')
+    obs_passwd = os.getenv('OBS_API_PASSWD')
+    git_project = os.getenv('GIT_PROJECT')
+
+    prerelease = PreRelease(content['OBS_REQ_PRJ'], obs_user,
+                            content['GIT_TAG'], git_project)
+    project = prerelease.obs_project_name()
+    bservice = TempBuildService(project, obs_api, obs_user, obs_passwd)
 
     if action == 'create':
-        prerelease = PreRelease(OBS_REQ_PRJ, OBS_API_USERNAME,
-                                GIT_TAG, GIT_PROJECT)
-        create(prerelease)
+        create(prerelease, bservice, git_project)
     elif action == 'cleanup':
-        prerelease = PreRelease(OBS_REQ_PRJ, OBS_API_USERNAME,
-                                GIT_TAG, GIT_PROJECT)
-        cleanup(prerelease)
+        cleanup(prerelease, bservice)
     elif action == 'create_images':
-        build = TempBuildService(project, OBS_API_URL,
-                                 OBS_API_USERNAME, OBS_API_PASSWD)
-        prerelease = PreRelease2(project, build)
-        create_images(prerelease)
+        prerelease = PreRelease2(project, bservice)
+        create_images(project, prerelease)
     else:
         print "Not support method of Pre-release jobs"