sleep(1)
build.link_project(obs_project, src=ref_obs_target_prj, linktype="localdep")
-def get_obs_package_name(git, branch, target_project, tag, gerrit_env=None):
+def get_info_from_tag(git, branch, target_project, tag, gerrit_env=None):
+
+ ret_data = {}
+ ret_data['commit_id'] = None
+ ret_data['spec_name'] = None
if not gerrit_env:
gerrit_env = GerritEnv()
gerrit_sshport=gerrit_env.sshport, \
git_cache_dir=git_cache):
print >> sys.stderr, 'Error cloning %s' % git
- return 1
+ return ret_data
+
mygit = Git(prjdir)
mygit.checkout(tag)
+
+ #TODO: Find commit id
+ ret_data['commit_id'] = mygit.rev_parse('HEAD')
+ print 'commit_id: %s' % ret_data['commit_id']
+
packagingdir = utils.parse_link('%s/%s' % (prjdir, 'packaging'))
obs_target_prjs = git_obs_map(git, \
if obs_use_specname == 'yes':
resp = find_specfile(prjdir, packagingdir, tag, {'project': git}, None)
if not resp['spec']:
- return None
+ return ret_data
resp = parse_specfile(resp['spec'], tag, git, None)
if not resp['spec']:
- return None
+ return ret_data
print 'spec name = %s' %(resp['spec'].name)
- return resp['spec'].name
+ ret_data['spec_name'] = resp['spec'].name
else:
if obs_pkg:
print 'package name from mapping = %s' % (obs_pkg)
- return obs_pkg
+ ret_data['spec_name'] = obs_pkg
else:
print 'package name from basename = %s' % (os.path.basename(git))
- return os.path.basename(git)
+ ret_data['spec_name'] = os.path.basename(git)
- return None
+ return ret_data
def get_manifest_filelists_snapshot(profile, request_url, timeout=5, group=None):
""" get manifest filelists from snapshot"""
from common.git import Git, clone_gitproject
from common.gerrit import GerritEnv
-from common.workflow import get_manifest_filelists_snapshot, get_obs_package_name
+from common.workflow import get_manifest_filelists_snapshot, get_info_from_tag
# set default char-set endcoding to utf-8
reload(sys)
os.system('wget %s -O myfile' % path)
with open('myfile', 'r') as sf:
board_data = sf.read()
- for line in board_data.replace('\\', '').split('\n'):
+ for line in board_data.replace('\\n', '').replace('\\', '').split('\n'):
try:
sr_list_from_snapshot = ast.literal_eval(line)
except Exception, err:
'requests': []
}
sr_list = []
- #for snapshot in raw_data.get('snapshots'):
if True:
+ checked_snapshots = []
+ #TODO: Split requests into each snapshots
for sr in raw_data.get('sr'):
- sr_list.append({sr.get('sr'): [ x.get('repo') for x in sr.get('packages') ]})
- ret_data['requests'].append({'snapshot': 'SR-SYNC', 'submit_list': sr_list})
+ checked_snapshots.append(sr.get('snapshot'))
+ for index, item in enumerate(sr.get('packages')):
+ sr_list.append({sr.get('sr'): [ {'repo': item.get('repo'),
+ 'cid': item.get('cid'),
+ 'snapshot': sr.get('snapshot'),
+ 'submitter': sr.get('submitters')[index].replace('\n', '')}
+ ]})
+ ret_data['requests'].append({'snapshot': ','.join(list(set(checked_snapshots))), 'submit_list': sr_list})
return ret_data
def main():
target_project = None
reason = 'SR-SYNC'
+ snapshot = None
if os.getenv('UPSTREAM_SNAPSHOT', None) and os.getenv('UPSTREAM_OBS_PROJECT', None):
snapshot = os.getenv('UPSTREAM_SNAPSHOT')
project = os.getenv('UPSTREAM_OBS_PROJECT')
raise Exception('Fail to fetch snapshot info from dashboard')
elif os.getenv('TRIGGER_INFO', None):
manual_trigger = trigger_info(os.getenv('TRIGGER_INFO'))
- snapshot = 'SR-SYNC'
project = manual_trigger.get('source')
target_project = manual_trigger.get('target')
# Parse triggered data
print 'requests:'
for rq in official_data['requests']:
print ' snapshot:%s' % rq['snapshot']
+ if snapshot is None:
+ snapshot = rq['snapshot']
print ' submit_list:'
for s in rq['submit_list']:
print ' %s' % s.keys()[0]
repo = item.get('repo')
cid = item.get('cid')
smtr = item.get('submitter')
+ sn = item.get('snapshot')
bSetHighlight = True
for item in mapping:
# We only care about defined git repositories
item.get('Project_name', '') == target_fork_prefix + repo:
bSetHighlight = False
if bSetHighlight:
- marked_repo = {'repo': HIGHLIGHT + repo, 'cid': cid, 'submitter': smtr}
+ marked_repo = {'repo': HIGHLIGHT + repo, 'cid': cid, 'submitter': smtr, 'snapshot': sn}
else:
- marked_repo = {'repo': GREYEDOUT + repo, 'cid': cid, 'submitter': smtr}
+ marked_repo = {'repo': GREYEDOUT + repo, 'cid': cid, 'submitter': smtr, 'snapshot': sn}
if marked_repo not in _sr_list[_sr_tag]:
_sr_list[_sr_tag].append(marked_repo)
if _sr_list[_sr_tag]:
git = item.get('repo')
cid = item.get('cid')
smtr = item.get('submitter')
+ sn = item.get('snapshot')
_package = ''
- if git.startswith(HIGHLIGHT):
- _package = get_obs_package_name(git[1:], source_branch, project, \
- submit, GerritEnv('PUBLIC_'))
- requests_item[project_to_create].append({'package': _package, \
- 'git_tag': submit, \
- 'cid': cid, \
- 'submitter': smtr, \
- 'gerrit_project': git})
+ if True:#git.startswith(HIGHLIGHT):
+ _tag_info = get_info_from_tag(git[1:], source_branch, project, \
+ submit, GerritEnv('PUBLIC_'))
+ _package = _tag_info.get('spec_name', None)
+ _commit_id = _tag_info.get('commit_id', None)
+ if _package and _commit_id:
+ requests_item[project_to_create].append({'package': _package, \
+ 'git_tag': submit, \
+ 'cid': _commit_id, \
+ 'submitter': smtr, \
+ 'gerrit_project': git, \
+ 'snapshot': sn})
if True: #os.getenv('label') == 'SR-SYNC':
trigger_next('PRE_RELEASE_REQUEST_%s' % target['target'], \
'obs_target_prj': project, \
'url': git_url, \
'obs_dest_prj': target['target'], \
- 'reason': reason})
+ 'reason': reason, \
+ 'snapshot': snapshot})
bm_end_datetime = datetime.now()
bm_sync_git_tag = project_to_create.split(':'+target['target']+':')[-1].replace(':','/')