From 65bd3dd10abda3c70a0016b8e9138896dc11a33a Mon Sep 17 00:00:00 2001 From: Yonghee Han Date: Tue, 20 Jun 2017 09:04:42 +0900 Subject: [PATCH] Add funtion in referenct project 1) Replace a gerrit url when project is copied from reference project 2) Import a binary rpm when project is copied from reference project Change-Id: Ia6e95ac33a32addb2551b04e3735ee5d89f3d96f --- job_ref_create_prj_obs.py | 51 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/job_ref_create_prj_obs.py b/job_ref_create_prj_obs.py index 8a39bd7..64ac67a 100644 --- a/job_ref_create_prj_obs.py +++ b/job_ref_create_prj_obs.py @@ -46,7 +46,6 @@ class ref_create_project_obs(object): pattern = r'tizen[0-9a-zA-Z_\-\.]*[0-9]{8}.[0-9]{1,2}' def setup_profile(self, project, repo_path=None): - # set up profile for l in self.profiles: if project == l['project']: @@ -174,7 +173,7 @@ class ref_create_project_obs(object): build.default_build_flag(target, repo = None, flag="build") build.default_build_flag(target, repo = None, flag="publish") - def create_project(self, build, target, info, meta, config, baserefproject=None): + def create_project(self, build, target, info, meta=None, config=None, baserefproject=None): """ create project """ @@ -186,13 +185,14 @@ class ref_create_project_obs(object): except ObsError, error: raise LocalError("Unable to create project %s: %s" % (target, error)) - # set meta - xml_meta = ElementTree.fromstringlist(meta) - #change the target project name - xml_meta.set('name',target) - #delete remote person - for person_element in xml_meta.findall('person'): - xml_meta.remove(person_element) + if meta: + # set meta + xml_meta = ElementTree.fromstringlist(meta) + #change the target project name + xml_meta.set('name',target) + #delete remote person + for person_element in xml_meta.findall('person'): + xml_meta.remove(person_element) #delete link project for link in xml_meta.findall('link'): xml_meta.remove(link) @@ -226,7 +226,8 @@ class ref_create_project_obs(object): except ObsError, error: raise LocalError("Unable to create project %s: %s" % (target, error)) - def list_packages_from_remote(self, remote_build, build, profile, target, packages=None, existing=False): + def list_packages_from_remote(self, remote_build, build, profile, target, packages=None, existing=False, + replace_gerrit_url=None): """ "" \ "%s" \ @@ -282,6 +283,12 @@ class ref_create_project_obs(object): content = f.read() if content: + # base_url,replace_url + if replace_gerrit_url is not None and ',' in replace_gerrit_url: + base_url = replace_gerrit_url.split(',')[0] + replace_url = replace_gerrit_url.split(',')[1] + content = content.replace(base_url, replace_url) + _git = '' _rev = '' _root = ElementTree.fromstringlist(content) @@ -658,6 +665,8 @@ class ref_create_project_obs(object): src = profile = fields['SRC_PROJECT'] target = fields['DEST_PROJECT'] + replace_gerrit_url = fields['REPLACE_GERRIT_URL'] + immport_rpm = fields['IMPORT_RPM'] build_src = build print "src = %s , target = %s" %(src, target) @@ -675,10 +684,12 @@ class ref_create_project_obs(object): if not build.exists(target): print "\n 0-2) create project: %s" %(target) self.create_project(build, target, None, remote_meta, config) - todo_dict = self.list_packages_from_remote(build_src, build, src, target) + todo_dict = self.list_packages_from_remote(build_src, build, src, target, + replace_gerrit_url=replace_gerrit_url) else: print "\n 0-2) project already exists: %s" %(target) - todo_dict = self.list_packages_from_remote(build_src, build, target, target, existing=True) + todo_dict = self.list_packages_from_remote(build_src, build, target, target, existing=True, + replace_gerrit_url=replace_gerrit_url) print '\nListing from Remote Done at %s' % (str(datetime.now())) print 'todo_dict(%d):' % (len(todo_dict)) @@ -701,7 +712,8 @@ class ref_create_project_obs(object): print " 3) add packages %s" %(packages) if packages: ret_dict_add = self.list_packages_from_remote(\ - remote_build, build, profile, target, packages=packages) + remote_build, build, profile, target, packages=packages, + replace_gerrit_url=replace_gerrit_url) if ret_dict_add: todo_dict.update(ret_dict_add) print '\nAdd Remove Done at %s' % (str(datetime.now())) @@ -726,11 +738,17 @@ class ref_create_project_obs(object): print "\n********" print " 8) Update build flag=default..." + if importrpm is not None and importrpm == True: + # importrpm trigger next + fields['profile'] = profile + fields['target'] = target + trigger_next("REF_IMPORT_RPM_OBS", fields) + print " 9) trigger_next import rpm .." + if errpackages: return 1 return 0 - def main(self, action=None): """ main @@ -765,7 +783,10 @@ class ref_create_project_obs(object): if os.getenv('SRC_PROJECT') and os.getenv('DEST_PROJECT'): fields = {'SRC_PROJECT': os.getenv('SRC_PROJECT'), - 'DEST_PROJECT': os.getenv('DEST_PROJECT')} + 'DEST_PROJECT': os.getenv('DEST_PROJECT'), + 'REPLACE_GERRIT_URL': os.getenv('REPLACE_GERRIT_URL'), + 'IMPORT_RPM': os.getenv('IMPORT_RPM'), + } else: fields = trigger_info(os.getenv('TRIGGER_INFO')) # Check if we've got required field in TRIGGER_INFO -- 2.7.4