def merge_properties(self, properties): # Ensure custom props aren't attempting to override base props original_keys = set(self.properties.keys()) new_keys = set(properties.keys()) intersecting_keys = original_keys.intersection(new_keys) conflicting_keys = [k for k in intersecting_keys if self.properties[k] != properties[k]] if len(conflicting_keys) > 0: props = ', '.join(conflicting_keys) reason = _("custom properties (%(props)s) conflict " "with base properties") raise exception.SchemaLoadError(reason=reason % {'props': props}) self.properties.update(properties)
def set_custom_schema_properties(self, schema_name, custom_properties): """Update the custom properties of a schema with those provided.""" schema_properties = copy.deepcopy(self.base_properties[schema_name]) # Ensure custom props aren't attempting to override base props base_keys = set(schema_properties.keys()) custom_keys = set(custom_properties.keys()) intersecting_keys = base_keys.intersection(custom_keys) conflicting_keys = [ k for k in intersecting_keys if schema_properties[k] != custom_properties[k] ] if len(conflicting_keys) > 0: props = ', '.join(conflicting_keys) reason = _("custom properties (%(props)s) conflict " "with base properties") raise exception.SchemaLoadError(reason=reason % {'props': props}) schema_properties.update(copy.deepcopy(custom_properties)) self.schema_properties[schema_name] = schema_properties