move token from metadata to api option
This commit is contained in:
parent
48255d08c2
commit
707d2b2b00
2 changed files with 20 additions and 18 deletions
|
|
@ -1292,6 +1292,7 @@ def handle_import_cg(goptions, session, args):
|
|||
help=_("Do not display progress of the upload"))
|
||||
parser.add_option("--link", action="store_true", help=_("Attempt to hardlink instead of uploading"))
|
||||
parser.add_option("--test", action="store_true", help=_("Don't actually import"))
|
||||
parser.add_option("--token", action="store", default=None, help=_("Build reservarion token"))
|
||||
(options, args) = parser.parse_args(args)
|
||||
if len(args) < 2:
|
||||
parser.error(_("Please specify metadata files directory"))
|
||||
|
|
@ -1336,7 +1337,7 @@ def handle_import_cg(goptions, session, args):
|
|||
if callback:
|
||||
print('')
|
||||
|
||||
session.CGImport(metadata, serverdir)
|
||||
session.CGImport(metadata, serverdir, options.token)
|
||||
|
||||
|
||||
def handle_import_comps(goptions, session, args):
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ try:
|
|||
# py 3.6+
|
||||
import secrets
|
||||
except ImportError:
|
||||
import binascii
|
||||
import random
|
||||
|
||||
import rpm
|
||||
|
|
@ -5569,14 +5568,14 @@ def cg_init_build(cg, data):
|
|||
token = generate_token()
|
||||
insert = InsertProcessor(table='build_reservations')
|
||||
insert.set(build_id=build_id)
|
||||
insert.set(user_id = context.session.user_id)
|
||||
insert.set(token = token)
|
||||
insert.set(user_id=context.session.user_id)
|
||||
insert.set(token=token)
|
||||
insert.execute()
|
||||
|
||||
return {'build_id': build_id, 'token': token}
|
||||
|
||||
|
||||
def cg_import(metadata, directory):
|
||||
def cg_import(metadata, directory, token=None):
|
||||
"""Import build from a content generator
|
||||
|
||||
metadata can be one of the following
|
||||
|
|
@ -5586,7 +5585,7 @@ def cg_import(metadata, directory):
|
|||
"""
|
||||
|
||||
importer = CG_Importer()
|
||||
return importer.do_import(metadata, directory)
|
||||
return importer.do_import(metadata, directory, token)
|
||||
|
||||
|
||||
class CG_Importer(object):
|
||||
|
|
@ -5595,7 +5594,7 @@ class CG_Importer(object):
|
|||
self.buildinfo = None
|
||||
self.metadata_only = False
|
||||
|
||||
def do_import(self, metadata, directory):
|
||||
def do_import(self, metadata, directory, token=None):
|
||||
metadata = self.get_metadata(metadata, directory)
|
||||
self.directory = directory
|
||||
|
||||
|
|
@ -5608,7 +5607,7 @@ class CG_Importer(object):
|
|||
self.assert_cg_access()
|
||||
|
||||
# prepare data for import
|
||||
self.prep_build()
|
||||
self.prep_build(token)
|
||||
self.prep_brs()
|
||||
self.prep_outputs()
|
||||
|
||||
|
|
@ -5620,7 +5619,7 @@ class CG_Importer(object):
|
|||
directory=directory)
|
||||
|
||||
# finalize import
|
||||
self.get_build()
|
||||
self.get_build(token)
|
||||
self.import_brs()
|
||||
try:
|
||||
self.import_outputs()
|
||||
|
|
@ -5728,15 +5727,17 @@ class CG_Importer(object):
|
|||
return query.executeOne()
|
||||
|
||||
|
||||
def prep_build(self):
|
||||
def prep_build(self, token=None):
|
||||
metadata = self.metadata
|
||||
if metadata['build'].get('build_id'):
|
||||
build_id = metadata['build']['build_id']
|
||||
buildinfo = get_build(build_id, strict=True)
|
||||
token = self.get_reserve_token(build_id)
|
||||
if not token or token['token'] != metadata['build']['token'] or \
|
||||
token['user_id'] != context.session.user_id or \
|
||||
build_token = self.get_reserve_token(build_id)
|
||||
if not build_token or build_token['token'] != token or \
|
||||
build_token['user_id'] != context.session.user_id or \
|
||||
buildinfo['state'] != koji.BUILD_STATES['BUILDING']:
|
||||
print(build_token)
|
||||
print(token)
|
||||
raise koji.GenericError('Build ID %s is not reserved by this CG' % build_id)
|
||||
if buildinfo['name'] != metadata['build']['name'] or \
|
||||
buildinfo['version'] != metadata['build']['version'] or \
|
||||
|
|
@ -5788,16 +5789,16 @@ class CG_Importer(object):
|
|||
return buildinfo
|
||||
|
||||
|
||||
def get_build(self):
|
||||
def get_build(self, token=None):
|
||||
try:
|
||||
binfo = dslice(self.buildinfo, ('name', 'version', 'release'))
|
||||
buildinfo = get_build(binfo, strict=True)
|
||||
token = self.get_reserve_token(buildinfo['build_id'])
|
||||
build_token = self.get_reserve_token(buildinfo['build_id'])
|
||||
if buildinfo.get('task_id') or \
|
||||
buildinfo['state'] != koji.BUILD_STATES['BUILDING'] or \
|
||||
not token or \
|
||||
token['user_id'] != context.session.user_id or \
|
||||
token['token'] != self.metadata['build']['token']:
|
||||
not build_token or \
|
||||
build_token['user_id'] != context.session.user_id or \
|
||||
build_token['token'] != token:
|
||||
raise koji.GenericError("Build is not reserved")
|
||||
buildinfo['extra'] = self.buildinfo['extra']
|
||||
build_id = buildinfo['build_id']
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue