debugging complex types

This commit is contained in:
Maria Teresa Paratore 2024-05-06 17:36:47 +02:00
parent 1e9cc50909
commit 4d062b9c37
11 changed files with 581 additions and 26723 deletions

26462
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -97,6 +97,7 @@
"bootstrap-icons": "^1.11.1",
"cytoscape": "3.25.0",
"dayjs": "1.11.5",
"jquery": "^3.7.1",
"mat-select-filter": "^2.4.1",
"material-icons-font": "^2.1.0",
"mdb-angular-ui-kit": "^3.0.1",

View File

@ -1,27 +1,20 @@
package org.gcube.informationsystem.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.com.fasterxml.jackson.databind.ObjectWriter;
import org.gcube.common.authorization.utils.manager.SecretManager;
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
import org.gcube.common.authorization.utils.secret.JWTSecret;
import org.gcube.common.authorization.utils.secret.Secret;
import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.contexts.reference.entities.Context;
import org.gcube.informationsystem.model.knowledge.ModelKnowledge;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException;
import org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaNotFoundException;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
import org.gcube.informationsystem.resourceregistry.publisher.ResourceRegistryPublisher;
@ -34,13 +27,9 @@ import org.gcube.informationsystem.service.dto.FacetSpecDTO;
import org.gcube.informationsystem.service.dto.FacetTypeDTO;
import org.gcube.informationsystem.service.dto.ResourceTypeDTO;
import org.gcube.informationsystem.service.dto.ValidationObjDTO;
import org.gcube.informationsystem.tree.Node;
import org.gcube.informationsystem.tree.Tree;
import org.gcube.informationsystem.types.PropertyTypeName;
import org.gcube.informationsystem.types.PropertyTypeName.BaseType;
import org.gcube.informationsystem.types.impl.entities.FacetTypeImpl;
import org.gcube.informationsystem.types.impl.entities.ResourceTypeImpl;
import org.gcube.informationsystem.types.impl.properties.PropertyDefinitionImpl;
import org.gcube.informationsystem.types.knowledge.TypeInformation;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
@ -48,16 +37,12 @@ import org.gcube.informationsystem.types.reference.properties.PropertyDefinition
import org.gcube.informationsystem.utils.UUIDUtility;
import org.gcube.informationsystem.web.rest.FacetDescription;
import org.gcube.informationsystem.web.rest.ResourceDescription;
import org.gcube.informationsystem.web.rest.TypeProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.internal.filter.ValueNode.JsonNode;
import com.nimbusds.jose.shaded.json.JSONUtil;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
/**
* Service class for managing InformationSystem resources.
@ -421,6 +406,17 @@ public class InformationSystemService {
ArrayList<JSONArray> extraProps = new ArrayList<JSONArray>();
JSONArray props = new JSONArray();
String sendingJson="";
/*
ResourceDescription(type=EService, consistsOf=[FacetDescription(type=IsIdentifiedBy,
target={optional=true, name=Maria Teresa Paratore, group=gr, description=, version=v56, qualifier=}),
FacetDescription(type=ConsistsOf, target={optional=true, name=name, group=ggg, description=, version=v4,
qualifier=}), FacetDescription(type=ConsistsOf, target={protocol=proto, endpoint=endpoint,
entryName=EntryNameMio, description=dddd, authorization={type=ValueSchema, schema=mariateresa, value=mtPwd}}),
FacetDescription(type=ConsistsOf, target={event=on, date=2024-05-21}),
FacetDescription(type=ConsistsOf, target={value=v7}),
FacetDescription(type=ConsistsOf, target={textURL=myUrl, name=myName})],
isRelatedTo=[])
*/
try {
facetNames = JsonPath.parse(formData).read("$..facetName");
facetRelations = JsonPath.parse(formData).read("$..relationFacet");
@ -428,10 +424,18 @@ public class InformationSystemService {
props = JsonPath.parse(formData).read("$..props");
ResourceDescription rd = new ResourceDescription();
rd = buildSendingJson(resourceType,facetNames,facetRelations,extraProps,props);
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
sendingJson = ow.writeValueAsString(rd);
ObjectMapper om = new ObjectMapper();
// Getting object as a json string
sendingJson = om.writeValueAsString(rd);
// Displaying JSON String on console
log.debug("******** JSON STRING TO BE SENT:");
log.debug(sendingJson);
log.debug("********");
//ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
//sendingJson = ow.writeValueAsString(rd);
}catch(Exception e) {
log.error(e.getMessage());
log.error(e.getMessage(),e);
}
return sendingJson;
}
@ -445,13 +449,34 @@ public class InformationSystemService {
LinkedHashMap targetMap_i = new LinkedHashMap<String, Object>();
FacetDescription facet_i = new FacetDescription();
facet_i.setType(relations.get(i));
LinkedHashMap joProp_i = (LinkedHashMap)props.get(i);
joProp_i.put("type", facetNames.get(i));
Iterator<String> keyit = (Iterator) joProp_i.keySet().iterator();
LinkedHashMap propMap_i = (LinkedHashMap)props.get(i);
String facetName_i = facetNames.get(i);
Iterator<String> keyit = (Iterator) propMap_i.keySet().iterator();
targetMap_i.put("type", facetName_i);
while(keyit.hasNext()) {
String key = keyit.next();
targetMap_i.put(key, joProp_i.get(key).toString());
targetMap_i.put(key, propMap_i.get(key).toString());
}
//modifica per tipo ValueSchema e campo authorization
if (facetName_i.equals("AccessPointFacet")&& propMap_i.keySet().contains("schema")&& propMap_i.keySet().contains("value")) {
TypeProperty vs = new TypeProperty();
/*LinkedHashMap authTypeMap = new LinkedHashMap<String, Object>();
authTypeMap.put("type", "ValueSchema");
authTypeMap.put("schema", (String)targetMap_i.get("schema"));
authTypeMap.put("value", (String)targetMap_i.get("value"));
targetMap_i.put("authorization", authTypeMap);
targetMap_i.remove("schema");
targetMap_i.remove("value");
*/
vs.setType("ValueSchema");
vs.setSchema((String)targetMap_i.get("schema"));
vs.setValue((String)targetMap_i.get("value"));
targetMap_i.put("authorization", vs);
targetMap_i.remove("schema");
targetMap_i.remove("value");
}
JSONArray extra_joProps_i = (JSONArray)extraProps.get(i);
if(extra_joProps_i.size()!=0) {
for(int j=0; j<extra_joProps_i.size(); j++) {

View File

@ -17,11 +17,6 @@ import lombok.NoArgsConstructor;
public class FacetDescription {
String type;
Map<String,String> target;
/*
String type;
FacetPropertyGroup target;
*/
}

View File

@ -249,13 +249,12 @@ public class InformationSystemResource{
String currentContext = SecretManagerProvider.instance.get().getContext();
String result = "";
informationSystemService.setUma(createUmaToken(currentContext));
formData = informationSystemService.createResourceInternal(resourceType, formData);
try {
formData = informationSystemService.createResourceInternal(resourceType, formData);
ResourceRegistryPublisher publisher = ResourceRegistryPublisherFactory.create();
result = publisher.createResource(formData);
}catch(Exception e) {
e.printStackTrace();
log.error(e.getMessage());
log.error(e.getMessage(),e);
}
return result;
}

View File

@ -0,0 +1,28 @@
package org.gcube.informationsystem.web.rest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TypeProperty {
String type;
String schema;
String value;
/*@Override
public
String toString(){
return this.type+"{\"schema:"+this.schema+",\"value:"+this.value+"}";
}
*/
@Override
public String toString() {
// TODO Auto-generated method stub
return "\"TypeProperty [type "+ type + ", schema = " + schema + ", value = " + value + "]";
}
}

View File

@ -1,3 +1,5 @@
{
"type": "HostingNode",
"consistsOf": [

View File

@ -49,12 +49,12 @@
<p style="color: darkgrey;">{{prop.label}}</p>
<mat-form-field>
<mat-label>username</mat-label>
<input matInput formControlName="username" id="username"
<input matInput formControlName="schema" id="username"
type="text"/>
</mat-form-field>
<mat-form-field>
<mat-label>password</mat-label>
<input matInput formControlName="password" id="password"
<input matInput formControlName="value" id="password"
type="password"/>
</mat-form-field>
</div>
@ -116,8 +116,8 @@
</div> <!-- ends the form -->
</mat-dialog-content>
<span>{{myForm.value|json}}</span>
<mat-dialog-actions align="end">
<button mat-button type="submit" (click)="onSubmit()">Submit</button>
<button mat-button (click)="close()">Cancel</button>
</mat-dialog-actions>
<!--<span>{{myForm.value|json}}</span>-->

View File

@ -222,10 +222,10 @@ export class FacetComposerComponent implements OnInit {
}
if(prop.type==="typeprop"){ //TODO: forse va messo il controllo anche sul tipo di facet
let fc2:FormControl;
propsFg.addControl("username",fc);
propsFg.addControl("schema",fc);
// eslint-disable-next-line prefer-const
fc2 = this.fb.control('') //text or typeprop
propsFg.addControl("password",fc2);
propsFg.addControl("value",fc2);
}else{
propsFg.addControl(prop.name,fc); //formGroup.addControl(prop_'controlName', formControl);
}

View File

@ -1,69 +1,18 @@
[
{
"type": "ConsistsOfType",
"id": "998bdc11-6f96-4708-afef-0806c365d44e",
"name": "IsIdentifiedBy",
"description": "Each {@link GCubeResource} has been defined to have at least a facet linked with an IsIdentifiedBy relation. IsIdentifiedBy indicates that the target facet represents a sort of identification for the source resource. For instance, a software can consist of one or more {@link SoftwareFacet} but the one related with IsIdentifiedBy represents the identify of the software.",
"version": "1.0.0",
"changelog": {
"1.0.0": "First Version"
},
"abstract": false,
"final": false,
"extendedTypes": [
"ConsistsOf"
],
"source": {
"type": "ResourceType",
"id": "4251601f-6b7c-4a0f-a827-892e0cba1de8",
"name": "Resource",
"description": "This is the base type for any Resource",
"facets": [
{
"type": "LinkedEntity",
"source": "Resource",
"relation": "ConsistsOf",
"target": "Facet",
"description": "Any Resource consists of one or more Facets which describes the different aspects of the resource.",
"min": 1,
"max": null
}
],
"resources": [
{
"type": "LinkedEntity",
"source": "Resource",
"relation": "IsRelatedTo",
"target": "Resource",
"description": "Any Resource can be related to any other resource.",
"min": 0,
"max": null
}
],
"version": "1.0.0",
"changelog": {
"1.0.0": "First Version"
},
"abstract": true,
"final": false,
"extendedTypes": [
"Entity"
]
},
"target": {
"type": "FacetType",
"id": "e51b6a96-d1ba-463c-98f6-3272b0427059",
"name": "Facet",
"description": "This is the base type for any Facet",
"version": "1.0.0",
"changelog": {
"1.0.0": "First Version"
},
"abstract": true,
"final": false,
"extendedTypes": [
"Entity"
]
{
"type": "VirtualService",
"consistsOf": [
{
"type": "IsIdentifiedBy",
"target": {
"type": "SoftwareFacet",
"optional": "true",
"name": "nomevs1",
"group": "g1",
"description": "",
"qualifier": "",
"version": "v1"
}
}
}
]
],
"isRelatedTo": []
}

View File

@ -1,447 +1,194 @@
{
"name": "EService",
"fatherId": null,
"description": "EService is any running service that is registered in the infrastructure and made available by an access point.",
"astratto": false,
"facetSpecs": [
{
"name": "SoftwareFacet",
"description": "SoftwareFacet captures information on any software associated with the resource.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Name",
"name": "name",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The name of the software artifact being described, e.g., artifactId in maven coordinates, the software name for retail software such as 'Office' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "boolean",
"label": "Optional",
"name": "optional",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "Used to indicate the software optionality, e.g., optional in maven coordinates"
},
{
"type": "text",
"label": "Group",
"name": "group",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The name of 'group' the software artifact belongs to, e.g., groupId in maven coordinates, company name for retail software software such as 'Microsoft\u2122' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "text",
"label": "Description",
"name": "description",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A human oriented description of the software artifact being described"
},
{
"type": "text",
"label": "Version",
"name": "version",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The particular release of the software artifact, e.g., version in maven coordinates, the software version for retail software such as '2013-SP2' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "text",
"label": "Qualifier",
"name": "qualifier",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A qualifier for the software, e.g., packaging or scope in maven coordinates, target architecture for retail software such as x86 or amd64"
}
],
"relationOptions": [
"IsIdentifiedBy"
],
"relation": "IsIdentifiedBy",
"min": "1",
"max": "1"
},
{
"name": "SoftwareFacet",
"description": "SoftwareFacet captures information on any software associated with the resource.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Name",
"name": "name",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The name of the software artifact being described, e.g., artifactId in maven coordinates, the software name for retail software such as 'Office' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "boolean",
"label": "Optional",
"name": "optional",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "Used to indicate the software optionality, e.g., optional in maven coordinates"
},
{
"type": "text",
"label": "Group",
"name": "group",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The name of 'group' the software artifact belongs to, e.g., groupId in maven coordinates, company name for retail software software such as 'Microsoft\u2122' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "text",
"label": "Description",
"name": "description",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A human oriented description of the software artifact being described"
},
{
"type": "text",
"label": "Version",
"name": "version",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The particular release of the software artifact, e.g., version in maven coordinates, the software version for retail software such as '2013-SP2' (in Microsoft\u2122 Office 2013-SP2)"
},
{
"type": "text",
"label": "Qualifier",
"name": "qualifier",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A qualifier for the software, e.g., packaging or scope in maven coordinates, target architecture for retail software such as x86 or amd64"
}
],
"relationOptions": [
"ConsistsOf",
"HasAction",
"HasAddAction",
"HasRemoveAction",
"HasContact",
"HasContributor",
"HasCreator",
"HasCurator",
"HasDeveloper",
"HasMaintainer",
"HasManager",
"HasOwner",
"HasCoverage",
"HasSpatialCoverage",
"HasTemporalCoverage",
"HasMemory",
"HasPersistentMemory",
"HasVolatileMemory",
"IsIdentifiedBy"
],
"relation": "ConsistsOf",
"min": "0",
"max": "many"
},
{
"name": "AccessPointFacet",
"description": "AccessPointFacet captures information on an 'access point' of a resource, i.e., any web-based endpoint to programmatically interact with the resource via a known protocol. For example, it is used to define the network endpoint to contact the service. The endpoint can expose a well-known high-level protocol.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Authorization",
"name": "authorization",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "Contains authorisation information. e.g., a token, the couple username:password, etc."
},
{
"type": "text",
"label": "Endpoint",
"name": "endpoint",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The URI which characterises the specific endpoint instance."
},
{
"type": "text",
"label": "Protocol",
"name": "protocol",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "The high-level protocol used by the access point. The String could contain the version if needed. e.g., Web Map Service (WMS) and not HyperText Transfer Protocol (HTTP) which is already contained in the URI."
},
{
"type": "text",
"label": "EntryName",
"name": "entryName",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A distinguishing string to be used by clients to identify the access point of interest."
},
{
"type": "text",
"label": "Description",
"name": "description",
"value": "",
"validations": [],
"pattern": null,
"propDescription": "A human-oriented text accompanying the access point."
}
],
"relationOptions": [
"ConsistsOf",
"HasAction",
"HasAddAction",
"HasRemoveAction",
"HasContact",
"HasContributor",
"HasCreator",
"HasCurator",
"HasDeveloper",
"HasMaintainer",
"HasManager",
"HasOwner",
"HasCoverage",
"HasSpatialCoverage",
"HasTemporalCoverage",
"HasMemory",
"HasPersistentMemory",
"HasVolatileMemory",
"IsIdentifiedBy"
],
"relation": "ConsistsOf",
"min": "1",
"max": "many"
},
{
"name": "EventFacet",
"description": "EventFacet captures information on a certain event/happening characterising the life cycle of the resource. Examples of an event are the start time of a virtual machine or the activation time of an electronic service.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Event",
"name": "event",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The typology of event"
},
{
"type": "date",
"label": "Date",
"name": "date",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The time the event took place/occurred"
}
],
"relationOptions": [
"ConsistsOf",
"HasAction",
"HasAddAction",
"HasRemoveAction",
"HasContact",
"HasContributor",
"HasCreator",
"HasCurator",
"HasDeveloper",
"HasMaintainer",
"HasManager",
"HasOwner",
"HasCoverage",
"HasSpatialCoverage",
"HasTemporalCoverage",
"HasMemory",
"HasPersistentMemory",
"HasVolatileMemory",
"IsIdentifiedBy"
],
"relation": "ConsistsOf",
"min": "1",
"max": "many"
},
{
"name": "StateFacet",
"description": "StateFacet captures information on state to be associated with the resource. The state is captured by any controlled vocabulary which is an integral part of the facet. Examples of usage are the state of service e.g., running or down or the state of a virtual machine e.g., activated or unreachable.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Value",
"name": "value",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The value of the state"
}
],
"relationOptions": [
"ConsistsOf",
"HasAction",
"HasAddAction",
"HasRemoveAction",
"HasContact",
"HasContributor",
"HasCreator",
"HasCurator",
"HasDeveloper",
"HasMaintainer",
"HasManager",
"HasOwner",
"HasCoverage",
"HasSpatialCoverage",
"HasTemporalCoverage",
"HasMemory",
"HasPersistentMemory",
"HasVolatileMemory",
"IsIdentifiedBy"
],
"relation": "ConsistsOf",
"min": "1",
"max": "1"
},
{
"name": "LicenseFacet",
"description": "LicenseFacet captures information on any license associated with the resource to capture the policies governing its exploitation and use. Example of use is the licence of a dataset e.g., Creative Commons Attribution (CC-BY) or the licence of software such as GPL. This facet is used to provide for human knowledge, but it is not excluded the usage by infrastructure services which enforces the respect of the licence e.g., a service which denies the usage of a dataset with Creative Commons Attribution No-Derivatives (CC-BY-ND)licence to produce a new dataset.",
"properties": null,
"guiProps": [
{
"type": "text",
"label": "Name",
"name": "name",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The common name of the license. e.g., European Union Public Licence (EUPL) 1.1, GNU General Public License (GPL) 2, Berkeley Software Distribution (BSD), Common Creative (CC)."
},
{
"type": "text",
"label": "TextURL",
"name": "textURL",
"value": "",
"validations": [
{
"name": "required",
"validator": "required",
"message": "The field is required"
}
],
"pattern": null,
"propDescription": "The URL to the actual text of the license."
}
],
"relationOptions": [
"ConsistsOf",
"HasAction",
"HasAddAction",
"HasRemoveAction",
"HasContact",
"HasContributor",
"HasCreator",
"HasCurator",
"HasDeveloper",
"HasMaintainer",
"HasManager",
"HasOwner",
"HasCoverage",
"HasSpatialCoverage",
"HasTemporalCoverage",
"HasMemory",
"HasPersistentMemory",
"HasVolatileMemory",
"IsIdentifiedBy"
],
"relation": "ConsistsOf",
"min": "0",
"max": "many"
}
"type": "EService",
"supertypes": [
"Service",
"GCubeResource",
"Resource"
],
"children": []
"id": "0b1fee4f-2a8a-4ee3-b328-685989b5ec20",
"consistsOf": [
{
"type": "IsIdentifiedBy",
"supertypes": [
"ConsistsOf"
],
"id": "54aaf524-9b4b-4aa0-bd31-9603ffc0d18b",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "SoftwareFacet",
"supertypes": [
"Facet"
],
"id": "afb3a822-152d-41dd-b335-0a2cc4884537",
"qualifier": null,
"name": "WhnManager",
"description": "Web Hosting Node Service",
"optional": false,
"version": "2.0.1",
"group": "VREManagement"
}
},
{
"type": "ConsistsOf",
"id": "ec3cb2f2-1a43-4aae-8401-39ab6c98affa",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "AccessPointFacet",
"supertypes": [
"Facet"
],
"id": "339ce36c-910d-4134-957b-8688c8fdfbeb",
"authorization": {
"type": "ValueSchema",
"schema": "nomeutente",
"value": "passwordkriptata",
"supertypes": [
"GCubeProperty",
"Property"
]
},
"endpoint": "http://accounting-service-2.cloud-dev.d4science.org:80/whn-manager/gcube/vremanagement/ws/whnmanager",
"protocol": null,
"entryName": "whnmanager",
"description": null
}
},
{
"type": "ConsistsOf",
"id": "6fed1692-bdd1-4d9d-a19a-a4f424cea3ac",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "AccessPointFacet",
"supertypes": [
"Facet"
],
"id": "b4a18192-5b4c-4960-bb0b-06214ac6b60a",
"authorization": {
"type": "ValueSchema",
"schema": null,
"value": "gcube-token",
"supertypes": [
"GCubeProperty",
"Property"
]
},
"endpoint": "http://accounting-service-2.cloud-dev.d4science.org:80/whn-manager/gcube/resource",
"protocol": null,
"entryName": "WhnManager-remote-management",
"description": null
}
},
{
"type": "ConsistsOf",
"id": "3af14b28-a74d-458a-ab2f-7c9d6ae3eec4",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "StateFacet",
"supertypes": [
"Facet"
],
"id": "034699e1-e619-44ac-8da2-838acc13e242",
"date": "2024-04-29 16:21:29.682 +0200",
"value": "ready"
}
},
{
"type": "ConsistsOf",
"id": "540e7db4-eb2a-4af0-9d9f-6b05640e7314",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "EventFacet",
"supertypes": [
"Facet"
],
"id": "5f435b65-cadb-42be-8d3d-41c8d4d9aea4",
"date": "2024-03-08 13:41:28.917 +0100",
"event": "started"
}
},
{
"type": "ConsistsOf",
"id": "27c3838a-ed80-4ccd-b1b8-f1b84f79297a",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "EventFacet",
"supertypes": [
"Facet"
],
"id": "3f3805c8-e6d6-48a3-99e6-113fdf35549a",
"date": "2024-04-29 16:21:29.682 +0200",
"event": "ready"
}
},
{
"type": "ConsistsOf",
"id": "b4b58d9d-fa3f-428c-9091-15c17396c759",
"propagationConstraint": {
"type": "PropagationConstraint",
"add": "propagate",
"delete": "cascade",
"remove": "cascade",
"supertypes": [
"Property"
]
},
"target": {
"type": "EventFacet",
"supertypes": [
"Facet"
],
"id": "970cb0e8-7cca-4fb3-8fbe-323439f0800a",
"date": "2024-03-08 13:40:38.203 +0100",
"event": "down"
}
}
]
}