From 28b64ae812ced019473423f017ac64525c375872 Mon Sep 17 00:00:00 2001 From: Hasan Wan Date: Fri, 9 Aug 2013 08:55:54 +0300 Subject: [PATCH] Fix protential error when creating pre-release project Fixes: #1094 Change-Id: I14efb72930332600311294e212190b60b367f269 Signed-off-by: Hasan Wan Reviewed-on: https://otctools.jf.intel.com/review/5766 Tested-by: OTC Tools Tester Reviewed-by: Eduard Bartosh --- common/buildservice.py | 29 +++++++++++++++++++++++++++++ job_pre_release_gerrit.py | 6 +++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/common/buildservice.py b/common/buildservice.py index 726fcf0..7050837 100644 --- a/common/buildservice.py +++ b/common/buildservice.py @@ -484,3 +484,32 @@ class BuildService(OSC): if repo_setting.attrib['name'] == repo_name: return [node.text for node in repo_setting.findall('arch')] return [] + + def link_project(self, project, src=None, linktype="all"): + """ + modify the meta conf to make it linked with src project + """ + if src and not self.exists(src): + raise ObsError('base project: %s not exists' % src) + + if not self.exists(project): + raise ObsError('project: %s not exists' % target) + + meta_xml = self.get_meta(project) + xml_root = ElementTree.fromstringlist(meta_xml) + + if xml_root.find('link') is not None: + raise ObsError('project: %s already linked with %s' + %(project, xml_root.find('link').get('project'))) + # Add linked project + link_element = ElementTree.Element('link', + {"project": "%s" %src}) + xml_root.append(link_element) + + # Modify repo attribute + repo_element = xml_root.find('repository') + + if repo_element is not None: + repo_element.set('linkedbuild', linktype) + + self.set_meta(ElementTree.tostring(xml_root), project) diff --git a/job_pre_release_gerrit.py b/job_pre_release_gerrit.py index e750a73..10b034f 100755 --- a/job_pre_release_gerrit.py +++ b/job_pre_release_gerrit.py @@ -71,8 +71,7 @@ def create(git_url, git_project, git_tag, git_revision, build, raise LocalError("Target project %s doesn't exist" % obs_target_prj) try: build.create_project(obs_project, obs_target_prj, - description=json.dumps(info), - linkto=obs_target_prj, linkedbuild='localdep') + description=json.dumps(info)) except ObsError, error: LocalError("Unable to create project %s: %s" % (obs_project, error)) @@ -96,11 +95,12 @@ def create(git_url, git_project, git_tag, git_revision, build, servicef.write(content) try: - return build.commit_files(obs_project, package, + build.commit_files(obs_project, package, [(fname, True)], commit_message) except ObsError, error: raise LocalError("Unable to upload _service to %s: %s" % \ (obs_project, error)) + build.link_project(obs_project, src=obs_target_prj, linktype="localdep") def main(name): """ -- 2.7.4