some change on operators

This commit is contained in:
lucio.lelii 2021-01-04 19:55:29 +01:00
parent f8b8b0d124
commit 10a452073a
21 changed files with 218 additions and 260 deletions

View File

@ -13,10 +13,9 @@ import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.operators.context.CustomContextOperator; import org.gcube.vremanagement.contextmanager.model.operators.context.CustomContextOperator;
import org.gcube.vremanagement.contextmanager.model.operators.context.MandatoryContextOperator; import org.gcube.vremanagement.contextmanager.model.operators.context.MandatoryContextOperator;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.OperatorParameters;
import org.gcube.vremanagement.contextmanager.model.report.OperationResult; import org.gcube.vremanagement.contextmanager.model.report.OperationResult;
import org.gcube.vremanagement.contextmanager.model.report.Report; import org.gcube.vremanagement.contextmanager.model.report.Report;
import org.gcube.vremanagement.contextmanager.model.report.ReportEntry;
import org.gcube.vremanagement.contextmanager.model.report.ReportGroup;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.Context.Type; import org.gcube.vremanagement.contextmanager.model.types.Context.Type;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -33,21 +32,21 @@ public class ContextManager {
@Inject @Inject
@Any @Any
private Instance<CustomContextOperator> customContextOperators; private Instance<CustomContextOperator<?,?>> customContextOperators;
@Inject @Inject
private ContextContainer contextContainer; private ContextContainer contextContainer;
@Inject
private ResourceManager resourceManager;
public Report createContext(String parentContextId, String vreName, List<String> resourcesIds) throws InvalidContextException { public Report createContext(String parentContextId, String vreName, List<OperatorParameters> parameters, String user) throws InvalidContextException {
Context parentContext = contextContainer.getContextById(parentContextId); Context parentContext = contextContainer.getContextById(parentContextId);
log.debug("parent context is null?? {}",(parentContext==null));
Context newContext = new Context(parentContext, vreName, vreName, Type.VRE); Context newContext = new Context(parentContext, vreName, vreName, Type.VRE);
Report report = new Report(newContext.getId(), vreName, newContext.getType(), "createContext", AuthorizationProvider.instance.get().getClient().getId()); Report report = new Report(newContext.getId(), vreName, newContext.getType(), "createContext", user );
try { try {
contextContainer.addContext(newContext ); contextContainer.addContext(newContext );
@ -57,13 +56,8 @@ public class ContextManager {
return report; return report;
} }
ReportGroup reportResGroup = new ReportGroup("addResources");
for (String resourceId: resourcesIds) {
resourceManager.addResourceToContext(newContext, resourceId);
reportResGroup.addEntry(new ReportEntry(resourceId, "add resource with id "+resourceId, OperationResult.success()));
}
// TODO: run all the operation passed
report.setResult(OperationResult.success()); report.setResult(OperationResult.success());
return report; return report;

View File

@ -8,6 +8,8 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import org.gcube.vremanagement.contextmanager.model.types.ScopedResource;
@XmlRootElement(name = "Body") @XmlRootElement(name = "Body")
@XmlAccessorType (XmlAccessType.FIELD) @XmlAccessorType (XmlAccessType.FIELD)
public class ScopeDescriptor { public class ScopeDescriptor {

View File

@ -20,6 +20,7 @@ import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.Context.Type; import org.gcube.vremanagement.contextmanager.model.types.Context.Type;
import org.gcube.vremanagement.contextmanager.model.types.ScopedResource;
import org.slf4j.Logger; import org.slf4j.Logger;
@Singleton @Singleton
@ -59,7 +60,7 @@ public class ScopeInitializer {
try { try {
Context context = createEntireContext(new ScopeBean(scope)); Context context = createEntireContext(new ScopeBean(scope));
for (ScopedResource res : scopeDescr.scopedResources) for (ScopedResource res : scopeDescr.scopedResources)
contextContainer.addResource(context.getId(), res.id); contextContainer.addResource(context.getId(), res.getId());
} catch (InvalidContextException e) { } catch (InvalidContextException e) {
logger.error("invalid context {}", scope,e); logger.error("invalid context {}", scope,e);
} }
@ -93,7 +94,9 @@ public class ScopeInitializer {
actual = new Context(parentContext,context, name, Type.values()[level]); actual = new Context(parentContext,context, name, Type.values()[level]);
contextContainer.addContext(actual); contextContainer.addContext(actual);
} catch (ContextAlreadyExistsException e) { } catch (ContextAlreadyExistsException e) {
logger.warn("context {} already exists", context,e); logger.warn("context {} already exists", context);
} catch (InvalidContextException ice) {
logger.warn(ice.getMessage());
} }
} }

View File

@ -1,47 +0,0 @@
package org.gcube.vremanagement.contextmanager;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType (XmlAccessType.FIELD)
public class ScopedResource {
@XmlElement(name = "ResourceID")
String id;
@XmlElement(name = "ResourceType")
String type;
@XmlElement(name = "JointTime")
String jointTime;
@XmlElement(name = "HostedOn")
String hostedOn;
protected ScopedResource() {}
public ScopedResource(String id, String type, String jointTime) {
super();
this.id = id;
this.type = type;
this.jointTime = jointTime;
}
public ScopedResource(String id, String type, String jointTime, String hostedOn) {
super();
this.id = id;
this.type = type;
this.jointTime = jointTime;
this.hostedOn = hostedOn;
}
@Override
public String toString() {
return "ScopedResource [id=" + id + ", type=" + type + ", jointTime=" + jointTime + ", hostedOn=" + hostedOn
+ "]";
}
}

View File

@ -26,13 +26,12 @@ import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.api.ServiceMap; import org.gcube.common.scope.api.ServiceMap;
import org.gcube.common.scope.impl.ScopedServiceMap; import org.gcube.common.scope.impl.ScopedServiceMap;
import org.gcube.vremanagement.contextmanager.Utils; import org.gcube.vremanagement.contextmanager.Utils;
import org.gcube.vremanagement.contextmanager.model.collectors.CollectorsBackend;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.slf4j.Logger; import org.slf4j.Logger;
@Singleton @Singleton
@Default @Default
public class LegacyISConnector implements CollectorsBackend { public class LegacyISConnector {
@Inject Logger log; @Inject Logger log;
@ -46,16 +45,13 @@ public class LegacyISConnector implements CollectorsBackend {
return parseResource(res); return parseResource(res);
} }
@Override
public void createContext(Context context, String parentContextId, List<String> resourceIds) { public void createContext(Context context, String parentContextId, List<String> resourceIds) {
} }
@Override
public boolean removeContext(Context context) { public boolean removeContext(Context context) {
return true; return true;
} }
@Override
public boolean addResourceToContext(Context context, Resource resource) { public boolean addResourceToContext(Context context, Resource resource) {
String completeContext = Utils.getScopeFromContext(context); String completeContext = Utils.getScopeFromContext(context);
resource.scopes().asCollection().add(completeContext); resource.scopes().asCollection().add(completeContext);
@ -67,7 +63,6 @@ public class LegacyISConnector implements CollectorsBackend {
return response.getStatusInfo().getFamily()==Family.SUCCESSFUL; return response.getStatusInfo().getFamily()==Family.SUCCESSFUL;
} }
@Override
public boolean removeResourceFromContext(Context context, Resource resource) { public boolean removeResourceFromContext(Context context, Resource resource) {
String completeContext = Utils.getScopeFromContext(context); String completeContext = Utils.getScopeFromContext(context);
@ -87,7 +82,6 @@ public class LegacyISConnector implements CollectorsBackend {
return response.getStatusInfo().getFamily()==Family.SUCCESSFUL; return response.getStatusInfo().getFamily()==Family.SUCCESSFUL;
} }
@Override
public boolean updateResource(Resource resource) { public boolean updateResource(Resource resource) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false; return false;

View File

@ -5,9 +5,10 @@ import java.util.List;
import org.gcube.vremanagement.contextmanager.exceptions.ContextAlreadyExistsException; import org.gcube.vremanagement.contextmanager.exceptions.ContextAlreadyExistsException;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.ContextRetriever;
public interface ContextContainer { public interface ContextContainer extends ContextRetriever{
List<String> getAvailableContexts(); List<String> getAvailableContexts();

View File

@ -53,22 +53,23 @@ public class ContextContainerImpl implements ContextContainer, ContextRetriever
return context; return context;
} }
public synchronized void addResource(String contextId, String resourceId) throws InvalidContextException { public synchronized boolean addResource(String contextId, String resourceId) throws InvalidContextException {
Context context = contextTree.getContext(contextId); Context context = contextTree.getContext(contextId);
if (context==null) throw new InvalidContextException("context with id "+contextId+" not found"); if (context==null) throw new InvalidContextException("context with id "+contextId+" not found");
if (!resourceMap.containsKey(contextId)) if (!resourceMap.containsKey(contextId))
resourceMap.put(contextId, new ArrayList<>()); resourceMap.put(contextId, new ArrayList<>());
resourceMap.get(contextId).add(resourceId); return resourceMap.get(contextId).add(resourceId);
} }
public synchronized void removeResource(String contextId, String resourceId) throws InvalidContextException { public synchronized boolean removeResource(String contextId, String resourceId) throws InvalidContextException {
Context context = contextTree.getContext(contextId); Context context = contextTree.getContext(contextId);
if (context==null) throw new InvalidContextException("context with id "+contextId+" not found"); if (context==null) throw new InvalidContextException("context with id "+contextId+" not found");
if (resourceMap.containsKey(contextId)) if (resourceMap.containsKey(contextId))
resourceMap.get(contextId).remove(resourceId); return resourceMap.get(contextId).remove(resourceId);
else return false;
} }
public List<String> getResources(String contextId) throws InvalidContextException { public List<String> getResources(String contextId) throws InvalidContextException {

View File

@ -20,7 +20,7 @@ public class ContextTree {
@Inject Logger log; @Inject Logger log;
private static TreeItem root; private TreeItem root;
private Map<String, TreeItem> values = new HashMap<>(); private Map<String, TreeItem> values = new HashMap<>();
@ -41,14 +41,15 @@ public class ContextTree {
log.debug("creating item {} with parentId {}", context, parentId); log.debug("creating item {} with parentId {}", context, parentId);
TreeItem item; TreeItem item;
if (parentId==null) { if (parentId==null) {
if (root!=null) throw new IllegalArgumentException("root is already set"); if (root!=null) throw new InvalidContextException("root is already set");
if (context.getType()!=Type.INFRASTRUCTURE) throw new InvalidContextException("this context is not a root context"); if (context.getType()!=Type.INFRASTRUCTURE) throw new InvalidContextException("this context is not a root context");
item = new TreeItem(null, context); item = new TreeItem(null, context);
root= item; root= item;
} else { } else {
TreeItem parentItem = values.get(parentId); TreeItem parentItem = values.get(parentId);
log.debug("parent id is {} and is present ? {} and values {}", parentId, parentItem!=null, values.keySet());
if (context.getType().getPossibleParent()!=parentItem.getContext().getType()) if (context.getType().getPossibleParent()!=parentItem.getContext().getType())
throw new IllegalArgumentException("parent not valid"); throw new InvalidContextException("parent not valid");
item = new TreeItem(parentItem, context); item = new TreeItem(parentItem, context);
parentItem.addChild(item); parentItem.addChild(item);
} }

View File

@ -1,66 +0,0 @@
package org.gcube.vremanagement.contextmanager.handlers.impl;
import java.util.Arrays;
import java.util.List;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.Resource.Type;
import org.gcube.vremanagement.contextmanager.handlers.ResourceHandler;
import org.gcube.vremanagement.contextmanager.model.collectors.CollectorsBackend;
import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.slf4j.Logger;
@Singleton
public class StaticResourceHandler implements ResourceHandler {
@Inject
Logger log;
@Inject
@Any
Instance<CollectorsBackend> connectors;
@Override
public List<Type> getManagedResources() {
return Arrays.asList(Type.GENERIC, Type.ENDPOINT);
}
@Override
public void addResource(Context context, Resource resource) {
for (CollectorsBackend connector : connectors)
try {
connector.addResourceToContext(context, resource);
}catch (Exception e) {
log.warn("error adding context {} in resource with id {} ",context.getName() ,resource.id() ,e);
}
}
@Override
public void removeResource(Context context, Resource resource) {
for (CollectorsBackend connector : connectors)
try {
connector.removeResourceFromContext(context, resource);
}catch (Exception e) {
log.warn("error removing context {} in resource with id {} ",context.getName() ,resource.id(), e);
}
}
@Override
public void createResourceNotified(Context context, Resource resource) {
// TODO Auto-generated method stub
}
@Override
public void removeResourceNotified(Context context, Resource resource) {
// TODO Auto-generated method stub
}
}

View File

@ -12,7 +12,7 @@ import org.gcube.vremanagement.contextmanager.model.report.OperationResult;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.Context.Type; import org.gcube.vremanagement.contextmanager.model.types.Context.Type;
public class StorageHubOperation implements MandatoryContextOperator{ public class StorageHubOperator implements MandatoryContextOperator{
StorageHubClient client = new StorageHubClient(); StorageHubClient client = new StorageHubClient();

View File

@ -1,26 +1,24 @@
package org.gcube.vremanagement.contextmanager.operators; package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
import org.gcube.vremanagement.contextmanager.ResourceManager;
import org.gcube.vremanagement.contextmanager.ScopedResource;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidParameterException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidParameterException;
import org.gcube.vremanagement.contextmanager.model.exceptions.OperationException; import org.gcube.vremanagement.contextmanager.model.exceptions.OperationException;
import org.gcube.vremanagement.contextmanager.model.operators.AddResourceParameter;
import org.gcube.vremanagement.contextmanager.model.operators.OperatorParameters;
import org.gcube.vremanagement.contextmanager.model.operators.context.CustomContextOperator; import org.gcube.vremanagement.contextmanager.model.operators.context.CustomContextOperator;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.AddResourceParameters;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.OperatorParameters;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.Context.Type; import org.gcube.vremanagement.contextmanager.model.types.Context.Type;
import org.gcube.vremanagement.contextmanager.model.types.ContextRetriever; import org.gcube.vremanagement.contextmanager.model.types.ContextRetriever;
import org.gcube.vremanagement.contextmanager.model.types.ScopedResource;
import org.slf4j.Logger; import org.slf4j.Logger;
public class AddResourceOperation extends CustomContextOperator<ScopedResource, AddResourceParameter> { public class AddResourceOperator extends CustomContextOperator<ScopedResource, AddResourceParameters> {
@Inject @Inject
private Logger log; private Logger log;
@ -28,11 +26,6 @@ public class AddResourceOperation extends CustomContextOperator<ScopedResource,
@Inject @Inject
private ResourceManager resourceManager; private ResourceManager resourceManager;
@Inject
private ContextRetriever contextRetriever;
@Override @Override
public Set<Type> getAllowedContextType() { public Set<Type> getAllowedContextType() {
return new HashSet<>(Arrays.asList(Type.values())); return new HashSet<>(Arrays.asList(Type.values()));
@ -49,11 +42,10 @@ public class AddResourceOperation extends CustomContextOperator<ScopedResource,
} }
@Override @Override
public ScopedResource execute(Context context, AddResourceParameter params) throws OperationException { public ScopedResource execute(Context context, AddResourceParameters params) throws OperationException {
log.debug("executing operation %s",this.getOperationId()); log.debug("executing operation {}",this.getOperationId());
try { try {
Context toAddTo = contextRetriever.getContextById(params.getContextId()); ScopedResource res = resourceManager.addResourceToContext(context, params.getResourceId());
ScopedResource res = resourceManager.addResourceToContext(toAddTo, params.getResourceId());
return res; return res;
}catch (InvalidContextException e) { }catch (InvalidContextException e) {
//it should never happen //it should never happen
@ -68,16 +60,9 @@ public class AddResourceOperation extends CustomContextOperator<ScopedResource,
} }
@Override @Override
protected AddResourceParameter checkAndTrasformParameters(Context context, OperatorParameters params) protected AddResourceParameters checkAndTrasformParameters(Context context, OperatorParameters params)
throws InvalidParameterException { throws InvalidParameterException {
AddResourceParameter addParams = AddResourceParameter.class.cast(params); AddResourceParameters addParams = AddResourceParameters.class.cast(params);
if (addParams.getContextId()==null)
throw new InvalidParameterException("contextId is null");
try {
contextRetriever.getContextById(addParams.getContextId());
}catch (InvalidContextException e) {
throw new InvalidParameterException("contextId "+addParams.getContextId()+" doesn't exist");
}
if (addParams.getResourceId()==null) if (addParams.getResourceId()==null)
throw new InvalidParameterException("resourceId is null"); throw new InvalidParameterException("resourceId is null");
return addParams; return addParams;

View File

@ -1,4 +1,4 @@
package org.gcube.vremanagement.contextmanager.handlers.impl; package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -7,7 +7,6 @@ import javax.inject.Singleton;
import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resource.Type;
import org.gcube.vremanagement.contextmanager.handlers.ResourceHandler;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
@Singleton @Singleton
@ -20,14 +19,13 @@ public class DynamicResourceHandler implements ResourceHandler {
} }
@Override @Override
public void addResource(Context context, Resource resource) { public boolean addResource(Context context, Resource resource) {
// TODO Auto-generated method stub return false;
} }
@Override @Override
public void removeResource(Context context, Resource resource) { public boolean removeResource(Context context, Resource resource) {
// TODO Auto-generated method stub return false;
} }
@Override @Override

View File

@ -0,0 +1,72 @@
package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidParameterException;
import org.gcube.vremanagement.contextmanager.model.exceptions.OperationException;
import org.gcube.vremanagement.contextmanager.model.operators.context.CustomContextOperator;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.OperatorParameters;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.RemoveResourceParameters;
import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.Context.Type;
import org.gcube.vremanagement.contextmanager.model.types.ScopedResource;
import org.slf4j.Logger;
public class RemoveResourceOperator extends CustomContextOperator<ScopedResource, RemoveResourceParameters> {
@Inject
private Logger log;
@Inject
private ResourceManager resourceManager;
@Override
public Set<Type> getAllowedContextType() {
return new HashSet<>(Arrays.asList(Type.values()));
}
@Override
public String getOperationId() {
return "remove-resource";
}
@Override
public String getDescription() {
return "Removes resource from context";
}
@Override
public ScopedResource execute(Context context, RemoveResourceParameters params) throws OperationException {
log.debug("executing operation {}",this.getOperationId());
try {
ScopedResource res = resourceManager.removeResourceFromContext(context, params.getResourceId());
return res;
}catch (InvalidContextException e) {
//it should never happen
throw new InvalidParameterException("unknown exception");
}
}
@Override
public ScopedResource undo(Context context, OperatorParameters params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected RemoveResourceParameters checkAndTrasformParameters(Context context, OperatorParameters params)
throws InvalidParameterException {
RemoveResourceParameters removeParams = RemoveResourceParameters.class.cast(params);
if (removeParams.getResourceId()==null)
throw new InvalidParameterException("resourceId is null");
return removeParams;
}
}

View File

@ -1,4 +1,4 @@
package org.gcube.vremanagement.contextmanager.handlers; package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.List; import java.util.List;

View File

@ -1,20 +1,19 @@
package org.gcube.vremanagement.contextmanager; package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.Iterator; import java.util.Iterator;
import javax.enterprise.inject.Any; import javax.enterprise.inject.Any;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Instance; import javax.enterprise.inject.Instance;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.Resource.Type; import org.gcube.common.resources.gcore.Resource.Type;
import org.gcube.vremanagement.contextmanager.collector.LegacyISConnector;
import org.gcube.vremanagement.contextmanager.handlers.ContextContainer; import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
import org.gcube.vremanagement.contextmanager.handlers.ResourceHandler;
import org.gcube.vremanagement.contextmanager.model.collectors.CollectorsBackend;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.ScopedResource;
import org.jboss.weld.exceptions.IllegalArgumentException; import org.jboss.weld.exceptions.IllegalArgumentException;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -27,11 +26,10 @@ public class ResourceManager {
Instance<ResourceHandler> resourcesHandlers; Instance<ResourceHandler> resourcesHandlers;
@Inject @Inject
@Default ContextContainer contextContainer;
CollectorsBackend defaultCollector;
@Inject @Inject
ContextContainer contextContainer; LegacyISConnector connector;
@Inject Logger log; @Inject Logger log;
@ -53,7 +51,7 @@ public class ResourceManager {
} }
private Resource retrieveResource(String id) { private Resource retrieveResource(String id) {
return defaultCollector.find(id); return connector.find(id);
} }

View File

@ -0,0 +1,52 @@
package org.gcube.vremanagement.contextmanager.operators.resources;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.Resource.Type;
import org.gcube.vremanagement.contextmanager.collector.LegacyISConnector;
import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.slf4j.Logger;
@Singleton
public class StaticResourceHandler implements ResourceHandler {
@Inject
Logger log;
@Override
public List<Type> getManagedResources() {
return Arrays.asList(Type.GENERIC, Type.ENDPOINT);
}
@Inject
LegacyISConnector connector;
@Override
public boolean addResource(Context context, Resource resource) {
return connector.addResourceToContext(context, resource);
}
@Override
public boolean removeResource(Context context, Resource resource) {
return connector.removeResourceFromContext(context, resource);
}
@Override
public void createResourceNotified(Context context, Resource resource) {
// TODO Auto-generated method stub
}
@Override
public void removeResourceNotified(Context context, Resource resource) {
// TODO Auto-generated method stub
}
}

View File

@ -15,16 +15,17 @@ import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException; import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.smartgears.annotations.ManagedBy; import org.gcube.smartgears.annotations.ManagedBy;
import org.gcube.vremanagement.contextmanager.ContextManager; import org.gcube.vremanagement.contextmanager.ContextManager;
import org.gcube.vremanagement.contextmanager.ContextServiceAppManager; import org.gcube.vremanagement.contextmanager.ContextServiceAppManager;
import org.gcube.vremanagement.contextmanager.ResourceManager;
import org.gcube.vremanagement.contextmanager.Utils; import org.gcube.vremanagement.contextmanager.Utils;
import org.gcube.vremanagement.contextmanager.handlers.ContextContainer; import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.model.types.StringList; import org.gcube.vremanagement.contextmanager.model.types.StringList;
import org.gcube.vremanagement.contextmanager.operators.resources.ResourceManager;
import org.glassfish.jersey.media.multipart.FormDataParam; import org.glassfish.jersey.media.multipart.FormDataParam;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -75,7 +76,7 @@ public class ContextService {
try { try {
//validate Call //validate Call
contextHandler.createContext(contextId, vreName, resourceIds.getValues()); contextHandler.createContext(contextId, vreName, resourceIds.getValues(), AuthorizationProvider.instance.get().getClient().getId());
}catch (Exception e) { }catch (Exception e) {
log.error("error creating context {}",contextId,e); log.error("error creating context {}",contextId,e);
throw new WebApplicationException(e); throw new WebApplicationException(e);

View File

@ -1,48 +0,0 @@
package org.gcube.vremanagement.contextmanager;
import java.util.List;
import javax.enterprise.inject.Default;
import org.gcube.common.resources.gcore.Resource;
import org.gcube.vremanagement.contextmanager.model.collectors.CollectorsBackend;
import org.gcube.vremanagement.contextmanager.model.types.Context;
@Default
public class BackendCollectorTester implements CollectorsBackend {
@Override
public Resource find(String resourceId) {
return null;
}
@Override
public void createContext(Context context, String parentContextId, List<String> resourceIds) {
// TODO Auto-generated method stub
}
@Override
public boolean removeContext(Context context) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean addResourceToContext(Context context, Resource resource) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean removeResourceFromContext(Context context, Resource resource) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean updateResource(Resource resource) {
// TODO Auto-generated method stub
return false;
}
}

View File

@ -11,12 +11,15 @@ import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.vremanagement.contextmanager.collector.LegacyISConnector; import org.gcube.vremanagement.contextmanager.collector.LegacyISConnector;
import org.gcube.vremanagement.contextmanager.handlers.ContextContainer; import org.gcube.vremanagement.contextmanager.handlers.ContextContainer;
import org.gcube.vremanagement.contextmanager.handlers.impl.ContextContainerImpl; import org.gcube.vremanagement.contextmanager.handlers.impl.ContextContainerImpl;
import org.gcube.vremanagement.contextmanager.handlers.impl.DynamicResourceHandler;
import org.gcube.vremanagement.contextmanager.handlers.impl.StaticResourceHandler;
import org.gcube.vremanagement.contextmanager.model.collectors.CollectorsBackend;
import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException; import org.gcube.vremanagement.contextmanager.model.exceptions.InvalidContextException;
import org.gcube.vremanagement.contextmanager.model.exceptions.OperationException;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.AddResourceParameters;
import org.gcube.vremanagement.contextmanager.model.operators.parameters.RemoveResourceParameters;
import org.gcube.vremanagement.contextmanager.model.types.Context; import org.gcube.vremanagement.contextmanager.model.types.Context;
import org.gcube.vremanagement.contextmanager.operations.MandatoryVREOperationTest; import org.gcube.vremanagement.contextmanager.operators.resources.AddResourceOperator;
import org.gcube.vremanagement.contextmanager.operators.resources.DynamicResourceHandler;
import org.gcube.vremanagement.contextmanager.operators.resources.RemoveResourceOperator;
import org.gcube.vremanagement.contextmanager.operators.resources.StaticResourceHandler;
import org.jglue.cdiunit.AdditionalClasses; import org.jglue.cdiunit.AdditionalClasses;
import org.jglue.cdiunit.CdiRunner; import org.jglue.cdiunit.CdiRunner;
import org.junit.Before; import org.junit.Before;
@ -26,7 +29,7 @@ import org.slf4j.Logger;
@RunWith(CdiRunner.class) @RunWith(CdiRunner.class)
@AdditionalClasses({ContextContainerImpl.class, Factories.class, @AdditionalClasses({ContextContainerImpl.class, Factories.class,
LegacyISConnector.class, DynamicResourceHandler.class, StaticResourceHandler.class, MandatoryVREOperationTest.class }) DynamicResourceHandler.class, StaticResourceHandler.class })
public class ScopeTester { public class ScopeTester {
@Inject ScopeInitializer scopeInitializer; @Inject ScopeInitializer scopeInitializer;
@ -35,11 +38,13 @@ public class ScopeTester {
@Inject ContextManager contextManager; @Inject ContextManager contextManager;
@Inject CollectorsBackend is; @Inject LegacyISConnector is;
@Inject Logger log; @Inject Logger log;
@Inject ResourceManager resourceManager; @Inject AddResourceOperator addResourceOp;
@Inject RemoveResourceOperator removeResourceOp;
private static String resourceId = "eabfe9bb-001d-48bc-92dc-586eefdc2006"; private static String resourceId = "eabfe9bb-001d-48bc-92dc-586eefdc2006";
@ -70,20 +75,29 @@ public class ScopeTester {
@Test @Test
public void addAndRemoveResourceScopeTest() throws InvalidContextException { public void addAndRemoveResourceScopeTest() throws InvalidContextException {
Context context = container.getContextById(vreContext); Context current = container.getContextById(ScopeProvider.instance.get());
resourceManager.addResourceToContext(context, resourceId); try {
addResourceOp.execute(current, new AddResourceParameters(vreContext, resourceId, Resource.Type.GENERIC));
} catch (OperationException e) {
log.error("operation error",e);
}
assertTrue(container.getResources(vreContext).contains(resourceId)); assertTrue(container.getResources(vreContext).contains(resourceId));
Resource res = is.find(resourceId); Resource res = is.find(resourceId);
assertTrue(res.scopes().asCollection().contains(vreContext)); assertTrue(res.scopes().asCollection().contains(vreContext));
log.debug("scopes are {}",res.scopes().asCollection()); log.debug("scopes are {}",res.scopes().asCollection());
resourceManager.removeResourceFromContext(context, resourceId); try {
removeResourceOp.execute(current, new RemoveResourceParameters(vreContext, resourceId));
} catch (OperationException e) {
log.error("operation error",e);
}
assertTrue(!container.getResources(vreContext).contains(resourceId)); assertTrue(!container.getResources(vreContext).contains(resourceId));
assertTrue(!is.find(resourceId).scopes().contains(vreContext)); assertTrue(!is.find(resourceId).scopes().contains(vreContext));
} }
@Test @Test
public void createContextTest() throws InvalidContextException { public void createContextTest() throws InvalidContextException {
contextManager.createContext(context, "newVRE", Collections.emptyList()); contextManager.createContext(context, "newVRE", Collections.emptyList(), "user");
assertTrue(container.getAvailableContexts().contains("newVRE"));
} }
} }

View File

@ -0,0 +1,7 @@
package org.gcube.vremanagement.contextmanager.operations;
public class AddResourceOperatorTest {
}

View File

@ -1,6 +1,7 @@
package org.gcube.vremanagement.contextmanager.operations; package org.gcube.vremanagement.contextmanager.operations;
import java.util.UUID; import java.util.Collections;
import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
@ -12,24 +13,14 @@ import org.slf4j.Logger;
public class MandatoryVREOperationTest implements MandatoryContextOperator{ public class MandatoryVREOperationTest implements MandatoryContextOperator{
static String id = UUID.randomUUID().toString();
@Inject Logger log; @Inject Logger log;
@Override
public Type getApplicationContextType() {
return Type.VRE;
}
@Override @Override
public String getOperationId() { public String getOperationId() {
return id; return "test-op";
} }
@Override
public String getName() {
return "testOp";
}
@Override @Override
public String getDescription() { public String getDescription() {
@ -48,4 +39,9 @@ public class MandatoryVREOperationTest implements MandatoryContextOperator{
return null; return null;
} }
@Override
public Set<Type> getAllowedContextType() {
return Collections.singleton(Type.VRE);
}
} }