def _load_config_schemas(): config_schemas = {} packs = ContentPackLoader().get_packs(content_utils.get_packs_base_paths()) for pack_name, pack_dir in six.iteritems(packs): config_schema_path = os.path.join(pack_dir, CONFIG_SCHEMA_FILE_NAME) if not os.path.isfile(config_schema_path): # Note: Config schema is optional continue values = MetaLoader().load(config_schema_path) if not values: raise ValueError('Config schema "%s" is empty and invalid.' % (config_schema_path)) content = {} content['pack'] = pack_name content['attributes'] = values config_schema_api = ConfigSchemaAPI(**content) config_schema_api = config_schema_api.validate() config_schemas[pack_name] = values return config_schemas
def _register_pack_config_schema_db(self, pack_name, pack_dir): config_schema_path = os.path.join(pack_dir, CONFIG_SCHEMA_FILE_NAME) if not os.path.isfile(config_schema_path): # Note: Config schema is optional return None values = self._meta_loader.load(config_schema_path) if not values: raise ValueError('Config schema "%s" is empty and invalid.' % (config_schema_path)) content = {} content['pack'] = pack_name content['attributes'] = values config_schema_api = ConfigSchemaAPI(**content) config_schema_api = config_schema_api.validate() config_schema_db = ConfigSchemaAPI.to_model(config_schema_api) try: config_schema_db.id = ConfigSchema.get_by_pack(pack_name).id except StackStormDBObjectNotFoundError: LOG.debug('Config schema for pack %s not found. Creating new one.', pack_name) config_schema_db = ConfigSchema.add_or_update(config_schema_db) LOG.debug('Config schema for pack %s registered.' % (pack_name)) return config_schema_db