Difference between revisions of "Information System Resource Registry"
Luca.frosini (Talk | contribs) (→Resource Registry Service) |
Luca.frosini (Talk | contribs) (→Resource Registry Service) |
||
Line 158: | Line 158: | ||
| Read Instace || GET || <code>/instances/{TYPE_NAME}/{UUID}</code> | | Read Instace || GET || <code>/instances/{TYPE_NAME}/{UUID}</code> | ||
|- | |- | ||
− | | Query || GET || <code>/access/query?q= | + | | Query || GET || <code>/access/query?q=SELECT FROM V&limit=20&fetchPlan=*:-1</code> |
|- | |- | ||
| Prepared Query || GET || <code>/access/query/{RESOURCE_TYPE_NAME}/{RELATION_TYPE_NAME}/{ENTITY_TYPE_NAME}[?reference={REFERENCE_ENTITY_UUID}&polymorphic=true&direction=out]</code> | | Prepared Query || GET || <code>/access/query/{RESOURCE_TYPE_NAME}/{RELATION_TYPE_NAME}/{ENTITY_TYPE_NAME}[?reference={REFERENCE_ENTITY_UUID}&polymorphic=true&direction=out]</code> |
Revision as of 18:30, 6 November 2020
The Resource Registry is the core component of the gCube Information System designed to support the operation of a hybrid cloud-based infrastructure:
- To capture, transmit, store, retrieve and manipulate data from any software system enabled on the infrastructure
- Location and properties
- Status, load, exploitation usage, and accounting data
- To provide access to information, organized to enable
- Monitoring, validation, and reporting
- Elasticity and pooling of resources
- To support any software system to
- Discover services and infrastructure resources
The Resource Registry - core of a SOA within the complexities of a hybrid cloud-based infrastructure – must enable
- a set of resource management functions
- enabling functions
- publication, discovery
- monitoring, deployment
- contextualization, security, execution
- data management functions
- access, store
- index, search
- transfer, transform
- enabling functions
- plus, a set of applications
- built against those functions
- Resource types: abstract view over functions
- defined by specifications
- multiple implementations, over time / concurrently
- different implementations, different information
- system cannot globally define them
- implementations produce/consume different facets, independently
- resource semantics dynamic
- no longer predefined in class hierarchies
- implicitly captured by current facets
- changes over time / across “similar” resources
Architecture
The constituent components are:
- Resource Registry Service
- Resource Registry Context Client
- Resource Registry Schema Client
- Resource Registry Publisher
- Resource Registry Client
Resource Registry Service
Resource Registry Service is the key component of the Information System. It is a web service running on SmartGears responsible to store information regarding the Infrastructure, in particular the global and partial view of:
- the resources (e.g. computing, storage, services, software, datasets);
- their current status (e.g. up and running, available);
- their relationships with other resources.
- the policies governing their exploitation.
Resource Registry is developed only by using the concepts defined in the IS Model and it provides the capabilities to enrich its knowledge by creating new types of entities and relations and their schemas.
Resource Registry is capable of serving different applications domains (i.e. Context). To achieve this goal the Resource Registry provides capabilities to manage Contexts (the contexts are hierarchical) and associate the entities and relations to one or more of the Contexts as requested by the different clients.
The Resource registry is also responsible to notify any update or creation of any entity or relation to Information System Subscription Notification Service.
To reach its goals Resource Registry offers 5 port types.
- Context Port Type : manage hierarchical Context;
- Schema Port Type : register and define Entities and Relations schema;
- Instances Port Type : manage instances of registered Entity and Relation type;
- Instances Sharing Port Type : allow to share instances accross contexts;
- Query & Access Port Type : query instances and get the schema definition of registered types.
Every Port type is exposed as REST API.
Every REST API is JSON based. This means that any content present in an HTTP request is formatted by using JSON standard.
The following tables summarise the APIs exposed by Resource Registry Service
Context Collection
Operation | HTTP Method | URL |
---|---|---|
List | GET | /contexts
|
Create | PUT | /contexts/{UUID}
|
Read | GET | /contexts/{UUID}
|
Update | PUT | /contexts/{UUID}
|
Delete | DELETE | /contexts/{UUID}
|
Type Collection
Operation | HTTP Method | URL |
---|---|---|
Create | PUT | /types/{TYPE_NAME}
|
Read | GET | /types/{TYPE_NAME}[?polymorphic=true]
|
Instances Collection
Operation | HTTP Method | URL |
---|---|---|
List | PUT | /instances/{TYPE_NAME}[?polymorphic=true]
|
Create | PUT | /instances/{TYPE_NAME}/{UUID}
|
Exists | GET | /instances/{TYPE_NAME}/{UUID}
|
Read | GET | /instances/{TYPE_NAME}/{UUID}
|
Update | PUT | /instances/{TYPE_NAME}/{UUID}
|
Delete | DELETE | /instances/{TYPE_NAME}/{UUID}
|
Sharing Collection
Operation | HTTP Method | URL |
---|---|---|
Get Instance Contexts | GET | /sharing/{TYPE_NAME}/{UUID}/contexts
|
Add Instance To Context | PUT | /sharing/{TYPE_NAME}/{UUID}/contexts/{CONTEXT_UUID}
|
Remove Instance From Context | DELETE | /sharing/{TYPE_NAME}/{UUID}/contexts/{CONTEXT_UUID}
|
Query & Access Collection
Operation | HTTP Method | URL |
---|---|---|
List Contexts | GET | /access/contexts
|
Read Context | GET | /access/contexts/{UUID}
|
Read Type | GET | /access/types/{TYPE_NAME}[?polymorphic=true]
|
List Instances | PUT | /access/instances/{TYPE_NAME}[?polymorphic=true]
|
Exists Instance | GET | /instances/{TYPE_NAME}/{UUID}
|
Read Instace | GET | /instances/{TYPE_NAME}/{UUID}
|
Query | GET | /access/query?q=SELECT FROM V&limit=20&fetchPlan=*:-1
|
Prepared Query | GET | /access/query/{RESOURCE_TYPE_NAME}/{RELATION_TYPE_NAME}/{ENTITY_TYPE_NAME}[?reference={REFERENCE_ENTITY_UUID}&polymorphic=true&direction=out]
|
Resource Registry Context Client
Resource Registry Schema is a java library providing RPC facilities to interact with Context Management port type. The library hides all the complexity of marshalling and unmarshalling of requests and result. By using this library any client is able to manage java classes instead of json object.
To use the Java library to interact with Context Collection declare the following dependency in your pom.xml file.
<dependency> <groupId>org.gcube.information-system</groupId> <artifactId>resource-registry-context-client</artifactId> <version>[4.0.0,5.0.0-SNAPSHOT)</version> <dependency>
Resource Registry Schema Client
Resource Registry Schema is a java library providing RPC facilities to interact with Schema Management port type. The library hides all the complexity of marshalling and unmarshalling of requests and result. By using this library any client is able to manage java classes instead of json object.
To use the Java library to interact with Context Collection declare the following dependency in your pom.xml file.
<dependency> <groupId>org.gcube.information-system</groupId> <artifactId>resource-registry-schema-client</artifactId> <version>[4.0.0,5.0.0-SNAPSHOT)</version> <dependency>
Resource Registry Publisher
Resource Registry Publisher is a java library providing RPC facilities to interact with ER Management port type. The library hides all the complexity of marshalling and unmarshalling of requests and result. By using this library any client is able to manage java classes instead of json object.
To use the Java library to interact with Context Collection declare the following dependency in your pom.xml file.
<dependency> <groupId>org.gcube.information-system</groupId> <artifactId>resource-registry-publisher</artifactId> <version>[4.0.0,5.0.0-SNAPSHOT)</version> <dependency>
Resource Registry Client
Resource Registry Client is a java library providing RPC facilities to interact with Query & Access port type. The library hides all the complexity of marshalling and unmarshalling of requests and result. By using this library any client is able to manage java classes instead of json object.
To use the Java library to interact with Context Collection declare the following dependency in your pom.xml file.
<dependency> <groupId>org.gcube.information-system</groupId> <artifactId>resource-registry-client</artifactId> <version>[4.0.0,5.0.0-SNAPSHOT)</version> <dependency>