in src/aaz_dev/command/model/configuration/_client.py [0:0]
def reformat(self, **kwargs):
for template in self.templates:
template.reformat(**kwargs)
self.templates = sorted(self.templates, key=lambda e: e.cloud)
if self.cloud_metadata:
self.cloud_metadata.reformat(**kwargs)
# make sure the placeholders across all the endpoints are consistent
placeholders = {}
for template in self.templates:
for placeholder, required in template.iter_placeholders():
if placeholder in placeholders:
placeholders[placeholder]['count'] += 1
if placeholders[placeholder]['required'] != required:
raise exceptions.VerificationError('Invalid endpoints', details='Inconsistent required for placeholder "{}"'.format(placeholder))
else:
placeholders[placeholder] = {
"required": required,
"count": 1
}
expected_count = len(self.templates)
if self.cloud_metadata:
for placeholder, required in self.cloud_metadata.iter_placeholders():
if placeholder in placeholders:
placeholders[placeholder]['count'] += 1
if placeholders[placeholder]['required'] != required:
raise exceptions.VerificationError('Invalid endpoints', details='Inconsistent required for placeholder "{}" in endpoints or cloud metadata'.format(placeholder))
else:
placeholders[placeholder] = {
"required": required,
"count": 1
}
expected_count += 1
for item in placeholders.values():
if item['count'] != expected_count:
raise exceptions.VerificationError('Invalid endpoints', details='placeholder "{}" is missed in some endpoints or cloud metadata'.format(placeholder))
# make sure the parameters are consistent with the placeholders
if self.params:
for param in self.params:
if param.name not in placeholders:
raise exceptions.VerificationError('Invalid endpoints', details='Unknown endpoint parameter: "{}"'.format(param.name))
if param.required != placeholders[param.name]['required']:
raise exceptions.VerificationError('Invalid endpoints', details='Inconsistent required for parameter: "{}"'.format(param.name))
if len(placeholders) > 0 and (not self.params or len(placeholders) != len(self.params)):
raise exceptions.VerificationError('Invalid endpoints', details='Inconsistent endpoint templates and parameters')
if self.params:
self.params = sorted(self.params, key=lambda p: p.name)