Store tenants in unparsed abide as dict
Simplify the code here as preparation for the cross-scheduler config loading. Change-Id: I0afd8c814973199781598dbefd51498ec92d733a
This commit is contained in:
parent
b540d1aad8
commit
8b6a887336
|
@ -734,7 +734,7 @@ class Client(zuul.cmd.ZuulApp):
|
|||
tenant_config, script = sched._checkTenantSourceConf(self.config)
|
||||
unparsed_abide = loader.readConfig(tenant_config, from_script=script)
|
||||
try:
|
||||
for conf_tenant in unparsed_abide.tenants:
|
||||
for conf_tenant in unparsed_abide.tenants.values():
|
||||
loader.tenant_parser.getSchema()(conf_tenant)
|
||||
print("Tenants config validated with success")
|
||||
err_code = 0
|
||||
|
|
|
@ -2258,10 +2258,9 @@ class ConfigLoader(object):
|
|||
abide.admin_rules[admin_rule.name] = admin_rule
|
||||
|
||||
if tenants:
|
||||
tenants_to_load = [t for t in unparsed_abide.tenants
|
||||
if t.get('name') in tenants]
|
||||
tenants_to_load = [unparsed_abide.tenants[t] for t in tenants]
|
||||
else:
|
||||
tenants_to_load = unparsed_abide.tenants
|
||||
tenants_to_load = unparsed_abide.tenants.values()
|
||||
|
||||
for conf_tenant in tenants_to_load:
|
||||
# When performing a full reload, do not use cached data.
|
||||
|
@ -2290,12 +2289,11 @@ class ConfigLoader(object):
|
|||
# We got a new unparsed abide so re-load the tenant completely.
|
||||
# First check if the tenant is still existing and if not remove
|
||||
# from the abide.
|
||||
if tenant.name not in unparsed_abide.known_tenants:
|
||||
if tenant.name not in unparsed_abide.tenants:
|
||||
del new_abide.tenants[tenant.name]
|
||||
return new_abide
|
||||
|
||||
unparsed_config = next(t for t in unparsed_abide.tenants
|
||||
if t['name'] == tenant.name)
|
||||
unparsed_config = unparsed_abide.tenants[tenant.name]
|
||||
else:
|
||||
unparsed_config = tenant.unparsed_config
|
||||
|
||||
|
|
|
@ -4305,13 +4305,12 @@ class UnparsedAbideConfig(object):
|
|||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.tenants = []
|
||||
self.tenants = {}
|
||||
self.admin_rules = []
|
||||
self.known_tenants = set()
|
||||
|
||||
def extend(self, conf):
|
||||
if isinstance(conf, UnparsedAbideConfig):
|
||||
self.tenants.extend(conf.tenants)
|
||||
self.tenants.update(conf.tenants)
|
||||
self.admin_rules.extend(conf.admin_rules)
|
||||
return
|
||||
|
||||
|
@ -4325,9 +4324,7 @@ class UnparsedAbideConfig(object):
|
|||
raise ConfigItemMultipleKeysError(item)
|
||||
key, value = list(item.items())[0]
|
||||
if key == 'tenant':
|
||||
self.tenants.append(value)
|
||||
if 'name' in value:
|
||||
self.known_tenants.add(value['name'])
|
||||
self.tenants[value["name"]] = value
|
||||
elif key == 'admin-rule':
|
||||
self.admin_rules.append(value)
|
||||
else:
|
||||
|
|
|
@ -762,12 +762,10 @@ class Scheduler(threading.Thread):
|
|||
# We need to handle new and deleted tenants so we need to process
|
||||
# all tenants from the currently known and the new ones.
|
||||
tenant_names = {t for t in self.abide.tenants}
|
||||
tenant_names.update(self.unparsed_abide.known_tenants)
|
||||
tenant_names.update(self.unparsed_abide.tenants.keys())
|
||||
for tenant_name in tenant_names:
|
||||
old_tenant = [x for x in old_unparsed_abide.tenants
|
||||
if x['name'] == tenant_name]
|
||||
new_tenant = [x for x in self.unparsed_abide.tenants
|
||||
if x['name'] == tenant_name]
|
||||
old_tenant = old_unparsed_abide.tenants.get(tenant_name)
|
||||
new_tenant = self.unparsed_abide.tenants.get(tenant_name)
|
||||
if old_tenant == new_tenant:
|
||||
continue
|
||||
|
||||
|
@ -1845,7 +1843,7 @@ class Scheduler(threading.Thread):
|
|||
data['pipelines'] = pipelines
|
||||
tenant = self.abide.tenants.get(tenant_name)
|
||||
if not tenant:
|
||||
if tenant_name not in self.unparsed_abide.known_tenants:
|
||||
if tenant_name not in self.unparsed_abide.tenants:
|
||||
return json.dumps({
|
||||
"message": "Unknown tenant",
|
||||
"code": 404
|
||||
|
|
Loading…
Reference in New Issue