Fixing error when trying to index schroot
The decompose functions uses .split('-') to separate the components of the schroots, but if the username has a dash it will fail. This changes adds the username as argument and remove it from the schroots folder's name before splitting it. Test plan: PASS - With username without '-' run build-pkgs -a -c --parallel 3 PASS - With an '-' in the username, run build-pkgs -a -c --parallel 3 Closes-bug: 2084170 Change-Id: Ibc94a23d4d38dd3391d0e3891d67749d8094f68d Signed-off-by: Dostoievski Batista <dostoievski.albinobatista@windriver.com>
This commit is contained in:
parent
0780bbfd1d
commit
3412f5818b
@ -117,20 +117,27 @@ class Debbuilder(object):
|
|||||||
chroot_name = '-'.join([chroot_name, str(index)])
|
chroot_name = '-'.join([chroot_name, str(index)])
|
||||||
return chroot_name
|
return chroot_name
|
||||||
|
|
||||||
def decompose_chroot_name(self, chroot_name):
|
def decompose_chroot_name(self, chroot_name, user):
|
||||||
|
self.logger.debug("Starting decompose_chroot_name...")
|
||||||
|
self.logger.debug("chroot_name: %s", chroot_name)
|
||||||
components = {}
|
components = {}
|
||||||
parts = chroot_name.split('-')
|
# the username may contain '-' so we remove it before splitting
|
||||||
if len(parts) < 3:
|
value_to_remove = f'-{user}'
|
||||||
|
parts = chroot_name.replace(value_to_remove, '').split('-')
|
||||||
|
self.logger.debug("parts: %s", parts)
|
||||||
|
if len(parts) < 2:
|
||||||
|
self.logger.debug("components: %s", components)
|
||||||
return components
|
return components
|
||||||
components['dist'] = parts[0]
|
components['dist'] = parts[0]
|
||||||
components['arch'] = parts[1]
|
components['arch'] = parts[1]
|
||||||
components['user'] = parts[2]
|
components['user'] = user
|
||||||
if len(parts) >= 4:
|
if len(parts) >= 3:
|
||||||
components['index'] = parts[3]
|
components['index'] = parts[2]
|
||||||
|
self.logger.debug("components: %s", components)
|
||||||
return components
|
return components
|
||||||
|
|
||||||
def index_from_chroot_name(self, chroot_name):
|
def index_from_chroot_name(self, chroot_name, user):
|
||||||
components = self.decompose_chroot_name(chroot_name)
|
components = self.decompose_chroot_name(chroot_name, user)
|
||||||
if 'index' in components:
|
if 'index' in components:
|
||||||
return int(components['index'])
|
return int(components['index'])
|
||||||
return None
|
return None
|
||||||
@ -153,21 +160,28 @@ class Debbuilder(object):
|
|||||||
schroot_name = '-'.join([schroot_name, str(index)])
|
schroot_name = '-'.join([schroot_name, str(index)])
|
||||||
return schroot_name
|
return schroot_name
|
||||||
|
|
||||||
def decompose_schroot_config_name(self, schroot_config_name):
|
def decompose_schroot_config_name(self, schroot_config_name, user):
|
||||||
|
self.logger.debug("Starting decompose_schroot_config_name...")
|
||||||
|
self.logger.debug("schroot_config_name: %s", schroot_config_name)
|
||||||
components = {}
|
components = {}
|
||||||
parts = schroot_config_name.split('-')
|
# the username may contain '-' so we remove it before splitting
|
||||||
if len(parts) < 4:
|
value_to_remove = f'-{user}'
|
||||||
|
parts = schroot_config_name.replace(value_to_remove, '').split('-')
|
||||||
|
self.logger.debug("parts: %s", parts)
|
||||||
|
if len(parts) < 3:
|
||||||
|
self.logger.debug("components: %s", components)
|
||||||
return components
|
return components
|
||||||
components['dist'] = parts[0]
|
components['dist'] = parts[0]
|
||||||
components['arch'] = parts[1]
|
components['arch'] = parts[1]
|
||||||
components['user'] = parts[2]
|
components['user'] = user
|
||||||
components['unique_id'] = parts[3]
|
components['unique_id'] = parts[2]
|
||||||
if len(parts) >= 5:
|
if len(parts) >= 4:
|
||||||
components['index'] = parts[4]
|
components['index'] = parts[3]
|
||||||
|
self.logger.debug("components: %s", components)
|
||||||
return components
|
return components
|
||||||
|
|
||||||
def index_from_schroot_config_name(self, schroot_config_name):
|
def index_from_schroot_config_name(self, schroot_config_name, user):
|
||||||
components = self.decompose_schroot_config_name(schroot_config_name)
|
components = self.decompose_schroot_config_name(schroot_config_name, user)
|
||||||
if 'index' in components:
|
if 'index' in components:
|
||||||
return int(components['index'])
|
return int(components['index'])
|
||||||
return None
|
return None
|
||||||
@ -258,24 +272,24 @@ class Debbuilder(object):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def is_parent_config(self, schroot_config_name):
|
def is_parent_config(self, schroot_config_name, user):
|
||||||
index = self.index_from_schroot_config_name(schroot_config_name)
|
index = self.index_from_schroot_config_name(schroot_config_name, user)
|
||||||
if index is None:
|
if index is None:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_parent_schroot_config(self):
|
def get_parent_schroot_config(self, user):
|
||||||
schroot_conf_list = os.listdir(self.schroot_config_dir)
|
schroot_conf_list = os.listdir(self.schroot_config_dir)
|
||||||
for schroot_conf_name in schroot_conf_list:
|
for schroot_conf_name in schroot_conf_list:
|
||||||
if self.is_parent_config(schroot_conf_name):
|
if self.is_parent_config(schroot_conf_name, user):
|
||||||
return schroot_conf_name
|
return schroot_conf_name
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def set_unique_id(self):
|
def set_unique_id(self, user):
|
||||||
parent_schroot_config_name = self.get_parent_schroot_config()
|
parent_schroot_config_name = self.get_parent_schroot_config(user)
|
||||||
self.logger.debug("parent_schroot_config_name: %s" % parent_schroot_config_name)
|
self.logger.debug("parent_schroot_config_name: %s" % parent_schroot_config_name)
|
||||||
parent_schroot_components = self.decompose_schroot_config_name(parent_schroot_config_name)
|
parent_schroot_components = self.decompose_schroot_config_name(parent_schroot_config_name, user)
|
||||||
if parent_schroot_components and 'unique_id' in parent_schroot_components:
|
if parent_schroot_components and 'unique_id' in parent_schroot_components:
|
||||||
self.attrs['unique_id'] = parent_schroot_components['unique_id']
|
self.attrs['unique_id'] = parent_schroot_components['unique_id']
|
||||||
self.logger.debug("unique_id: %s" % self.attrs['unique_id'])
|
self.logger.debug("unique_id: %s" % self.attrs['unique_id'])
|
||||||
@ -292,7 +306,7 @@ class Debbuilder(object):
|
|||||||
parent_chroot_name = self.get_parent_chroot_name(user)
|
parent_chroot_name = self.get_parent_chroot_name(user)
|
||||||
if self.has_chroot(parent_chroot_name):
|
if self.has_chroot(parent_chroot_name):
|
||||||
self.logger.warn("chroot %s already exists" % parent_chroot_name)
|
self.logger.warn("chroot %s already exists" % parent_chroot_name)
|
||||||
self.set_unique_id()
|
self.set_unique_id(user)
|
||||||
response['status'] = 'exists'
|
response['status'] = 'exists'
|
||||||
response['msg'] = 'chroot exists'
|
response['msg'] = 'chroot exists'
|
||||||
return response
|
return response
|
||||||
@ -402,7 +416,7 @@ class Debbuilder(object):
|
|||||||
|
|
||||||
schroot_conf_list = os.listdir(self.schroot_config_dir)
|
schroot_conf_list = os.listdir(self.schroot_config_dir)
|
||||||
for schroot_conf_name in schroot_conf_list:
|
for schroot_conf_name in schroot_conf_list:
|
||||||
index = self.index_from_schroot_config_name(schroot_conf_name)
|
index = self.index_from_schroot_config_name(schroot_conf_name, user)
|
||||||
if index is None or index <= max_index:
|
if index is None or index <= max_index:
|
||||||
continue
|
continue
|
||||||
if not self.delete_cloned_schroot_config(user, project, index):
|
if not self.delete_cloned_schroot_config(user, project, index):
|
||||||
@ -413,7 +427,7 @@ class Debbuilder(object):
|
|||||||
for chroot_name in chroot_list:
|
for chroot_name in chroot_list:
|
||||||
if chroot_name == 'chroot.d':
|
if chroot_name == 'chroot.d':
|
||||||
continue
|
continue
|
||||||
index = self.index_from_chroot_name(chroot_name)
|
index = self.index_from_chroot_name(chroot_name, user)
|
||||||
if index is None or index <= max_index:
|
if index is None or index <= max_index:
|
||||||
continue
|
continue
|
||||||
if not self.delete_cloned_chroot(user, project, index):
|
if not self.delete_cloned_chroot(user, project, index):
|
||||||
@ -430,7 +444,7 @@ class Debbuilder(object):
|
|||||||
for chroot_name in chroot_list:
|
for chroot_name in chroot_list:
|
||||||
if chroot_name == 'chroot.d':
|
if chroot_name == 'chroot.d':
|
||||||
continue
|
continue
|
||||||
index = self.index_from_chroot_name(chroot_name)
|
index = self.index_from_chroot_name(chroot_name, user)
|
||||||
if index is None:
|
if index is None:
|
||||||
continue
|
continue
|
||||||
if not self.delete_cloned_chroot(user, project, index):
|
if not self.delete_cloned_chroot(user, project, index):
|
||||||
@ -448,7 +462,7 @@ class Debbuilder(object):
|
|||||||
continue
|
continue
|
||||||
if not utils.is_tmpfs(os.path.join(user_chroots_dir, chroot_name)):
|
if not utils.is_tmpfs(os.path.join(user_chroots_dir, chroot_name)):
|
||||||
continue
|
continue
|
||||||
index = self.index_from_chroot_name(chroot_name)
|
index = self.index_from_chroot_name(chroot_name, user)
|
||||||
if index is None:
|
if index is None:
|
||||||
continue
|
continue
|
||||||
if not self.delete_cloned_chroot(user, project, index):
|
if not self.delete_cloned_chroot(user, project, index):
|
||||||
@ -516,7 +530,7 @@ class Debbuilder(object):
|
|||||||
response['msg'] = 'The parent schroot config file for %s does not exist' % parent_chroot_name
|
response['msg'] = 'The parent schroot config file for %s does not exist' % parent_chroot_name
|
||||||
return response
|
return response
|
||||||
|
|
||||||
self.set_unique_id()
|
self.set_unique_id(user)
|
||||||
|
|
||||||
if not self.delete_clones_by_max_index(user, project, required_instances):
|
if not self.delete_clones_by_max_index(user, project, required_instances):
|
||||||
response['status'] = 'fail'
|
response['status'] = 'fail'
|
||||||
|
Loading…
Reference in New Issue
Block a user