mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Create configurations to integrate dynamic pod creation
This commit is contained in:
parent
6288003915
commit
e500a82680
37
config/config-dynamic.json
Normal file
37
config/config-dynamic.json
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||||
|
"import": [
|
||||||
|
"files-scs:config/presets/acl.json",
|
||||||
|
"files-scs:config/presets/http.json",
|
||||||
|
"files-scs:config/presets/identifiers/suffix-identifiers.json",
|
||||||
|
"files-scs:config/presets/init.json",
|
||||||
|
"files-scs:config/presets/ldp.json",
|
||||||
|
"files-scs:config/presets/ldp/credentials-extractor.json",
|
||||||
|
"files-scs:config/presets/ldp/metadata-handler.json",
|
||||||
|
"files-scs:config/presets/ldp/operation-handler.json",
|
||||||
|
"files-scs:config/presets/ldp/permissions-extractor.json",
|
||||||
|
"files-scs:config/presets/ldp/response-writer.json",
|
||||||
|
"files-scs:config/presets/ldp/request-parser.json",
|
||||||
|
"files-scs:config/presets/ldp/websockets.json",
|
||||||
|
"files-scs:config/presets/logging.json",
|
||||||
|
"files-scs:config/presets/middleware.json",
|
||||||
|
"files-scs:config/presets/pod-dynamic.json",
|
||||||
|
"files-scs:config/presets/representation-conversion.json",
|
||||||
|
"files-scs:config/presets/static.json",
|
||||||
|
"files-scs:config/presets/storage/backend/storage-memory.json",
|
||||||
|
"files-scs:config/presets/storage-wrapper.json",
|
||||||
|
"files-scs:config/presets/cli-params.json"
|
||||||
|
],
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"comment": "This configuration sets up a server that allows for the creation of dynamic pods through pod provisioning."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"comment": "Which store to use for requests that do not match any pod",
|
||||||
|
"@id": "urn:solid-server:default:BaseUrlRouterRule",
|
||||||
|
"BaseUrlRouterRule:_baseStore": {
|
||||||
|
"@id": "urn:solid-server:default:MemoryResourceStore"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -24,6 +24,11 @@
|
|||||||
{
|
{
|
||||||
"@id": "urn:solid-server:default:variable:podTemplateFolder",
|
"@id": "urn:solid-server:default:variable:podTemplateFolder",
|
||||||
"@type": "Variable"
|
"@type": "Variable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"comment": "Path to the JSON file used to store configuration for dynamic pods.",
|
||||||
|
"@id": "urn:solid-server:default:variable:podConfigJson",
|
||||||
|
"@type": "Variable"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
143
config/presets/pod-dynamic.json
Normal file
143
config/presets/pod-dynamic.json
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
{
|
||||||
|
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"comment": "Sets up all the classes that are specifically necessary for dynamic pod generation."
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:PodConfigurationStorage",
|
||||||
|
"@type": "JsonFileStorage",
|
||||||
|
"JsonFileStorage:_filePath": "urn:solid-server:default:variable:podConfigJson",
|
||||||
|
"JsonFileStorage:_locker": {
|
||||||
|
"@id": "urn:solid-server:default:ResourceLocker"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:PodRoutingStorage",
|
||||||
|
"@type": "ResourceIdentifierStorage",
|
||||||
|
"ResourceIdentifierStorage:_source": {
|
||||||
|
"@type": "MemoryMapStorage"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:StoreFactory",
|
||||||
|
"@type": "BaseComponentsJsFactory"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:PodGenerator",
|
||||||
|
"@type": "TemplatedPodGenerator",
|
||||||
|
"TemplatedPodGenerator:_storeFactory": {
|
||||||
|
"@id": "urn:solid-server:default:StoreFactory"
|
||||||
|
},
|
||||||
|
"TemplatedPodGenerator:_variableHandler": {
|
||||||
|
"@type": "ParallelHandler",
|
||||||
|
"ParallelHandler:_handlers": [
|
||||||
|
{
|
||||||
|
"@type": "BaseUrlHandler"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"@type": "RootFilePathHandler",
|
||||||
|
"RootFilePathHandler:_fileMapper": {
|
||||||
|
"@type": "ExtensionBasedMapper",
|
||||||
|
"ExtensionBasedMapper:_base": {
|
||||||
|
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||||
|
},
|
||||||
|
"ExtensionBasedMapper:_rootFilepath": {
|
||||||
|
"@id": "urn:solid-server:default:variable:rootFilePath"
|
||||||
|
},
|
||||||
|
"ExtensionBasedMapper:_overrideTypes_acl": "text/turtle",
|
||||||
|
"ExtensionBasedMapper:_overrideTypes_meta": "text/turtle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TemplatedPodGenerator:_configStorage": {
|
||||||
|
"@id": "urn:solid-server:default:PodConfigurationStorage"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:PodManager",
|
||||||
|
"@type": "ConfigPodManager",
|
||||||
|
"ConfigPodManager:_idGenerator": {
|
||||||
|
"@type": "SuffixIdentifierGenerator",
|
||||||
|
"SuffixIdentifierGenerator:_base": {
|
||||||
|
"@id": "urn:solid-server:default:variable:baseUrl"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ConfigPodManager:_podGenerator": {
|
||||||
|
"@id": "urn:solid-server:default:PodGenerator"
|
||||||
|
},
|
||||||
|
"ConfigPodManager:_routingStorage": {
|
||||||
|
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||||
|
},
|
||||||
|
"ConfigPodManager:_resourcesGenerator": {
|
||||||
|
"@id": "urn:solid-server:default:ResourcesGenerator",
|
||||||
|
"@type": "TemplatedResourcesGenerator",
|
||||||
|
"TemplatedResourcesGenerator:_templateFolder": {
|
||||||
|
"@id": "urn:solid-server:default:variable:podTemplateFolder"
|
||||||
|
},
|
||||||
|
"TemplatedResourcesGenerator:_factory": {
|
||||||
|
"@type": "ExtensionBasedMapperFactory"
|
||||||
|
},
|
||||||
|
"TemplatedResourcesGenerator:_engine": {
|
||||||
|
"@type": "HandlebarsTemplateEngine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:PodManagerHandler",
|
||||||
|
"@type": "PodManagerHttpHandler",
|
||||||
|
"PodManagerHttpHandler:_args_requestPath": "/pods",
|
||||||
|
"PodManagerHttpHandler:_args_requestParser": {
|
||||||
|
"@id": "urn:solid-server:default:RequestParser"
|
||||||
|
},
|
||||||
|
"PodManagerHttpHandler:_args_podSettingsParser": {
|
||||||
|
"@type": "PodSettingsJsonParser"
|
||||||
|
},
|
||||||
|
"PodManagerHttpHandler:_args_manager": {
|
||||||
|
"@id": "urn:solid-server:default:PodManager"
|
||||||
|
},
|
||||||
|
"PodManagerHttpHandler:_args_responseWriter": {
|
||||||
|
"@id": "urn:solid-server:default:ResponseWriter"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:Initializer",
|
||||||
|
"comment": "Add entry to initializer list",
|
||||||
|
"SequenceHandler:_handlers": {
|
||||||
|
"@type": "ConfigPodInitializer",
|
||||||
|
"ConfigPodInitializer:_storeFactory": {
|
||||||
|
"@id": "urn:solid-server:default:StoreFactory"
|
||||||
|
},
|
||||||
|
"ConfigPodInitializer:_configStorage": {
|
||||||
|
"@id": "urn:solid-server:default:PodConfigurationStorage"
|
||||||
|
},
|
||||||
|
"ConfigPodInitializer:_routingStorage": {
|
||||||
|
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:BaseUrlRouterRule",
|
||||||
|
"@type": "BaseUrlRouterRule",
|
||||||
|
"BaseUrlRouterRule:_stores": {
|
||||||
|
"@id": "urn:solid-server:default:PodRoutingStorage"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:RoutingResourceStore",
|
||||||
|
"@type": "RoutingResourceStore",
|
||||||
|
"RoutingResourceStore:_rule": {
|
||||||
|
"@id": "urn:solid-server:default:BaseUrlRouterRule"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
51
config/templates/storage-defaults.json
Normal file
51
config/templates/storage-defaults.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||||
|
"import": [
|
||||||
|
"files-scs:config/presets/acl.json",
|
||||||
|
"files-scs:config/presets/representation-conversion.json",
|
||||||
|
"files-scs:config/presets/static.json"
|
||||||
|
],
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"comment": "Configures classes that are used by all other storage-*.json configurations."
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:AuxiliaryStrategy",
|
||||||
|
"comment": "Copied from storage-wrapper.json since a variable is required in there",
|
||||||
|
"@type": "RoutingAuxiliaryStrategy",
|
||||||
|
"RoutingAuxiliaryStrategy:_sources": [
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:default:AclStrategy"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:IdentifierStrategy",
|
||||||
|
"@type": "SingleRootIdentifierStrategy",
|
||||||
|
"SingleRootIdentifierStrategy:_baseUrl": {
|
||||||
|
"@id": "urn:solid-server:template:variable:baseUrl"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:ResourceStore",
|
||||||
|
"@type": "DataAccessorBasedStore",
|
||||||
|
"DataAccessorBasedStore:_accessor": {
|
||||||
|
"@id": "urn:solid-server:template:DataAccessor"
|
||||||
|
},
|
||||||
|
"DataAccessorBasedStore:_identifierStrategy": {
|
||||||
|
"@id": "urn:solid-server:template:IdentifierStrategy"
|
||||||
|
},
|
||||||
|
"DataAccessorBasedStore:_auxiliaryStrategy": {
|
||||||
|
"@id": "urn:solid-server:default:AuxiliaryStrategy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:variable:baseUrl",
|
||||||
|
"@type": "Variable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
37
config/templates/storage-filesystem.json
Normal file
37
config/templates/storage-filesystem.json
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||||
|
"import": [
|
||||||
|
"files-scs:config/templates/storage-defaults.json"
|
||||||
|
],
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"comment": "Sets up a file data accessor with corresponding extension based file mapper."
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:FileIdentifierMapper",
|
||||||
|
"@type": "ExtensionBasedMapper",
|
||||||
|
"ExtensionBasedMapper:_base": {
|
||||||
|
"@id": "urn:solid-server:template:variable:baseUrl"
|
||||||
|
},
|
||||||
|
"ExtensionBasedMapper:_rootFilepath": {
|
||||||
|
"@id": "urn:solid-server:template:variable:rootFilePath"
|
||||||
|
},
|
||||||
|
"ExtensionBasedMapper:_overrideTypes_acl": "text/turtle",
|
||||||
|
"ExtensionBasedMapper:_overrideTypes_meta": "text/turtle"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:DataAccessor",
|
||||||
|
"@type": "FileDataAccessor",
|
||||||
|
"FileDataAccessor:_resourceMapper": {
|
||||||
|
"@id": "urn:solid-server:template:FileIdentifierMapper"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:variable:rootFilePath",
|
||||||
|
"@type": "Variable"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
19
config/templates/storage-memory.json
Normal file
19
config/templates/storage-memory.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^0.0.0/components/context.jsonld",
|
||||||
|
"import": [
|
||||||
|
"files-scs:config/templates/storage-defaults.json"
|
||||||
|
],
|
||||||
|
"@graph": [
|
||||||
|
{
|
||||||
|
"comment": "Sets up a memory data accessor."
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"@id": "urn:solid-server:template:DataAccessor",
|
||||||
|
"@type": "InMemoryDataAccessor",
|
||||||
|
"InMemoryDataAccessor:_strategy": {
|
||||||
|
"@id": "urn:solid-server:template:IdentifierStrategy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -37,6 +37,7 @@ export class CliRunner {
|
|||||||
port: { type: 'number', alias: 'p', default: 3000 },
|
port: { type: 'number', alias: 'p', default: 3000 },
|
||||||
rootFilePath: { type: 'string', alias: 'f', default: './' },
|
rootFilePath: { type: 'string', alias: 'f', default: './' },
|
||||||
sparqlEndpoint: { type: 'string', alias: 's' },
|
sparqlEndpoint: { type: 'string', alias: 's' },
|
||||||
|
podConfigJson: { type: 'string', default: './pod-config.json' },
|
||||||
})
|
})
|
||||||
.help();
|
.help();
|
||||||
|
|
||||||
@ -89,6 +90,8 @@ export class CliRunner {
|
|||||||
'urn:solid-server:default:variable:sparqlEndpoint': params.sparqlEndpoint,
|
'urn:solid-server:default:variable:sparqlEndpoint': params.sparqlEndpoint,
|
||||||
'urn:solid-server:default:variable:podTemplateFolder':
|
'urn:solid-server:default:variable:podTemplateFolder':
|
||||||
this.resolveFilePath(params.podTemplateFolder, 'templates/pod'),
|
this.resolveFilePath(params.podTemplateFolder, 'templates/pod'),
|
||||||
|
'urn:solid-server:default:variable:podConfigJson':
|
||||||
|
this.resolveFilePath(params.podConfigJson),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ describe('CliRunner', (): void => {
|
|||||||
'urn:solid-server:default:variable:sparqlEndpoint': undefined,
|
'urn:solid-server:default:variable:sparqlEndpoint': undefined,
|
||||||
'urn:solid-server:default:variable:loggingLevel': 'info',
|
'urn:solid-server:default:variable:loggingLevel': 'info',
|
||||||
'urn:solid-server:default:variable:podTemplateFolder': joinFilePath(__dirname, '../../../templates/pod'),
|
'urn:solid-server:default:variable:podTemplateFolder': joinFilePath(__dirname, '../../../templates/pod'),
|
||||||
|
'urn:solid-server:default:variable:podConfigJson': '/var/cwd/pod-config.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -79,6 +80,7 @@ describe('CliRunner', (): void => {
|
|||||||
'-p', '4000',
|
'-p', '4000',
|
||||||
'-s', 'http://localhost:5000/sparql',
|
'-s', 'http://localhost:5000/sparql',
|
||||||
'-t', 'templates',
|
'-t', 'templates',
|
||||||
|
'--podConfigJson', '/different-path.json',
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -106,6 +108,7 @@ describe('CliRunner', (): void => {
|
|||||||
'urn:solid-server:default:variable:port': 4000,
|
'urn:solid-server:default:variable:port': 4000,
|
||||||
'urn:solid-server:default:variable:rootFilePath': '/root',
|
'urn:solid-server:default:variable:rootFilePath': '/root',
|
||||||
'urn:solid-server:default:variable:sparqlEndpoint': 'http://localhost:5000/sparql',
|
'urn:solid-server:default:variable:sparqlEndpoint': 'http://localhost:5000/sparql',
|
||||||
|
'urn:solid-server:default:variable:podConfigJson': '/different-path.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -123,6 +126,7 @@ describe('CliRunner', (): void => {
|
|||||||
'--port', '4000',
|
'--port', '4000',
|
||||||
'--rootFilePath', 'root',
|
'--rootFilePath', 'root',
|
||||||
'--sparqlEndpoint', 'http://localhost:5000/sparql',
|
'--sparqlEndpoint', 'http://localhost:5000/sparql',
|
||||||
|
'--podConfigJson', '/different-path.json',
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -150,6 +154,7 @@ describe('CliRunner', (): void => {
|
|||||||
'urn:solid-server:default:variable:port': 4000,
|
'urn:solid-server:default:variable:port': 4000,
|
||||||
'urn:solid-server:default:variable:rootFilePath': '/var/cwd/root',
|
'urn:solid-server:default:variable:rootFilePath': '/var/cwd/root',
|
||||||
'urn:solid-server:default:variable:sparqlEndpoint': 'http://localhost:5000/sparql',
|
'urn:solid-server:default:variable:sparqlEndpoint': 'http://localhost:5000/sparql',
|
||||||
|
'urn:solid-server:default:variable:podConfigJson': '/different-path.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user