diff --git a/.project b/.project index db70b7c..1d1e5a0 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - applicationSupportLayerVREManagement + asl-vre @@ -16,12 +16,12 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.wst.validation.validationbuilder - org.eclipse.wst.validation.validationbuilder + org.eclipse.m2e.core.maven2Builder diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 5e26ae7..08575ee 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,6 +1,6 @@ - + diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/pom.xml b/pom.xml index aa48711..66050e4 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.gcube.applicationsupportlayer aslvre - 4.0.0-SNAPSHOT + 5.0.0-SNAPSHOT jar VRE Management ASL Extension @@ -29,29 +29,33 @@ UTF-8 UTF-8 + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + - - org.gcube.core - gcf - [1.5.0-SNAPSHOT, 2.0.0-SNAPSHOT) - provided - org.gcube.applicationsupportlayer aslcore - [3.2.1-SNAPSHOT, 4.0.0-SNAPSHOT) + provided + + + org.gcube.vremanagement + vremodeler-client-library + [1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) provided org.gcube.resourcemanagement - vremodeler-stubs - [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) - provided - - - org.gcube.resourcemanagement - ghnmanager-stubs - [1.5.0-SNAPSHOT, 2.0.0-SNAPSHOT) + ghn-manager-client + [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) provided @@ -62,12 +66,10 @@ log4j log4j - 1.2.6 javax.portlet portlet-api - 2.0 provided diff --git a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/ISInfoI.java b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/ISInfoI.java deleted file mode 100644 index 826b80a..0000000 --- a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/ISInfoI.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.gcube.application.framework.vremanagement.vremanagement; - -import java.io.File; -import java.util.List; - -import org.gcube.common.core.informationsystem.client.RPDocument; -import org.gcube.common.core.informationsystem.client.XMLResult; -import org.gcube.common.core.resources.GCUBECollection; -import org.gcube.common.core.resources.GCUBEMCollection; -import org.gcube.common.core.scope.GCUBEScope; - -/** - * @author valia - * - */ -public interface ISInfoI { - - /** - * @param query an XQuery to be submitted on IS - * @return a list of XMLResults that represent resources form IS (like RIs, Generic Resources, Collections, etc) - */ - public List queryIS(String query); - - /** - * @param type the of the WSs to be retrieved - * @return a list of RPDocuments - */ - public List getWS(String type); - - /** - * Adds a GHN to the active VRE - * @param url the GHN url - */ - public void addGHNToScope(String url); - - /** - * Adds a service to the active VRE - * @param url the Running Instance url - * @param className the name of the class where the RI will belong - * @param name the name of teh service it provides - */ - public void addRIToScope(String url, String className, String name); - - /** - * @param namePort GHN name:port - * @return true if GHN exists, otherwise false - */ - public boolean existsGHN(String namePort); - - - /** - * @param id the id of the external running instance to be removed - */ - public void removeExternalRIToVRE(String id); - - /** - * @param file the file that contains the external running instance to be added - */ - public void addExternalRIToVRE(File file); - - /** - * @param url server:port of the GHN to be removed - */ - public void removeGHNToScope(String url); - - /** - * @param scope the scope of the collections. - * @return a list of collections profile. - * @throws Exception - */ - public List getCollections(GCUBEScope scope)throws Exception; - - /** - * @param scope the scope of the metadata collections. - * @param collectionID the associated collection. - * @return a list of metadata collections profile. - * @throws Exception - */ - public List getMCollections(GCUBEScope scope, String collectionID)throws Exception; - - - /** - * @param scope the indices scope. - * @param mcollectionID the metadata collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getXMLIndices(GCUBEScope scope, String mcollectionID) throws Exception; - - - - /** - * Return all indices associated with a given metadata collection. - * @param scope the indices scope. - * @param mcollectionID the metadata collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getIndices(GCUBEScope scope, String mcollectionID) throws Exception; - - - - /** - * @param scope the indices scope. - * @param collectionID the collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getCollectionIndices(GCUBEScope scope, String collectionID) throws Exception; - - - - /** - * @param scope the collection scope. - * @param collectionID the collection id. - * @return a collection profile. - * @throws Exception - */ - public GCUBECollection getCollection(GCUBEScope scope, String collectionID) throws Exception; -} - diff --git a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/VREGeneratorInterface.java b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/VREGeneratorInterface.java index 35a9cd7..e7afa3a 100644 --- a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/VREGeneratorInterface.java +++ b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/VREGeneratorInterface.java @@ -3,12 +3,14 @@ package org.gcube.application.framework.vremanagement.vremanagement; import java.rmi.RemoteException; import java.util.List; -import org.gcube.vremanagement.vremodeler.stubs.FunctionalityList; -import org.gcube.vremanagement.vremodeler.stubs.FunctionalityNodes; -import org.gcube.vremanagement.vremodeler.stubs.GHNType; -import org.gcube.vremanagement.vremodeler.stubs.GHNsPerFunctionality; -import org.gcube.vremanagement.vremodeler.stubs.SelectedResourceDescriptionType; -import org.gcube.vremanagement.vremodeler.stubs.VREDescription; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityItem; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityList; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityNodes; +import org.gcube.vremanagement.vremodel.cl.stubs.types.GHN; +import org.gcube.vremanagement.vremodel.cl.stubs.types.GHNsPerFunctionality; +import org.gcube.vremanagement.vremodel.cl.stubs.types.SelectedResourceDescriptionType; +import org.gcube.vremanagement.vremodel.cl.stubs.types.VREDescription; + public interface VREGeneratorInterface { @@ -29,7 +31,7 @@ public interface VREGeneratorInterface { * @return what the vVRE modeler returns * @throws RemoteException */ - List getGHNs() throws RemoteException; + List getGHNs() throws RemoteException; /** * @return what the vVRE modeler returns @@ -41,7 +43,7 @@ public interface VREGeneratorInterface { * @return what the vVRE modeler returns * @throws RemoteException */ - FunctionalityList getFunctionality() throws Exception; + List getFunctionality() throws Exception; FunctionalityNodes getSelectedFunctionality() throws Exception; @@ -80,7 +82,7 @@ public interface VREGeneratorInterface { * @param functionalityIDElement * @throws RemoteException */ - void setFunctionality(int[] funcIds, SelectedResourceDescriptionType[] selResDesc) throws RemoteException; + void setFunctionality(Integer[] funcIds, SelectedResourceDescriptionType[] selResDesc) throws RemoteException; /** * @return diff --git a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/ISInfo.java b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/ISInfo.java deleted file mode 100644 index 06d68bb..0000000 --- a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/ISInfo.java +++ /dev/null @@ -1,413 +0,0 @@ -package org.gcube.application.framework.vremanagement.vremanagement.impl; - -import java.io.File; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.List; - -import org.apache.axis.message.addressing.Address; -import org.apache.axis.message.addressing.EndpointReferenceType; -import org.gcube.application.framework.core.security.PortalSecurityManager; -import org.gcube.application.framework.core.security.ServiceContextManager; -import org.gcube.application.framework.core.session.ASLSession; -import org.gcube.application.framework.vremanagement.vremanagement.ISInfoI; -import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.RPDocument; -import org.gcube.common.core.informationsystem.client.XMLResult; -import org.gcube.common.core.informationsystem.client.queries.GCUBECollectionQuery; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery; -import org.gcube.common.core.informationsystem.client.queries.GCUBEMCollectionQuery; -import org.gcube.common.core.informationsystem.client.queries.WSResourceQuery; -import org.gcube.common.core.informationsystem.publisher.ISPublisher; -import org.gcube.common.core.informationsystem.publisher.ISPublisherException; -import org.gcube.common.core.resources.GCUBECollection; -import org.gcube.common.core.resources.GCUBEExternalRunningInstance; -import org.gcube.common.core.resources.GCUBEMCollection; -import org.gcube.common.core.scope.GCUBEScope; -import org.gcube.common.vremanagement.ghnmanager.stubs.AddScopeInputParams; -import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType; -import org.gcube.common.vremanagement.ghnmanager.stubs.ScopeRIParams; -import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator; - -/** - * @author Valia Tsaqgkalidou (NKUA) - */ -public class ISInfo implements ISInfoI { - - /** - * ASLSession to be used - */ - protected ASLSession session; - /** - * is client in order to query IS - */ - protected static ISClient client = null; - - protected static ISPublisher publisher = null; - - /** - * Constructs a ISInfo object - * @param session the D4Science session to be used for retrieving information needed - */ - public ISInfo(ASLSession session) - { - this.session = session; - try { - publisher = GHNContext.getImplementation(ISPublisher.class); - } catch (Exception e) { - e.printStackTrace(); - } - if(client == null) - { - try { - client = GHNContext.getImplementation(ISClient.class); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - client = null; - } - } - } - - /** {@inheritDoc}*/ - public List queryIS(String query) { - try { - GCUBEGenericQuery queryMan = client.getQuery(GCUBEGenericQuery.class); - - queryMan.setExpression(query); - System.out.println(session.getOriginalScopeName()); - return client.execute(queryMan, session.getScope()); - } catch (Exception e) { - e.printStackTrace(); - } - return new ArrayList(); - } - - /** {@inheritDoc}*/ - public List getWS(String type) - { - WSResourceQuery query = null; - try { - query = client.getQuery(WSResourceQuery.class); - query.addAtomicConditions(new AtomicCondition("/gc:ServiceClass", type)); - return client.execute(query, session.getScope()); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return new ArrayList(); - - } - - - /** {@inheritDoc}*/ - public void addGHNToScope(String url) { - //TODO: this will probably change... - - EndpointReferenceType endpoint = new EndpointReferenceType(); - try { - url = "http://" + url + "/wsrf/services/gcube/common/vremanagement/GHNManager"; - String[] vos = session.getOriginalScopeName().split("/"); - System.out.println("querying for vo: /" + vos[1]); - - endpoint.setAddress(new Address(url)); - GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator(); - GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint); - pt = (GHNManagerPortType) ServiceContextManager.applySecurity(pt, GCUBEScope.getScope("/" + vos[1]), session.getCredential()); - AddScopeInputParams params = new AddScopeInputParams(); - params.setScope(session.getOriginalScopeName()); - params.setMap(""); //eventually, set here the new Service Map - pt.addScope(params); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** {@inheritDoc}*/ - public void removeGHNToScope(String url) { - //TODO: this will probably change... - - EndpointReferenceType endpoint = new EndpointReferenceType(); - try { - url = "http://" + url + "/wsrf/services/gcube/common/vremanagement/GHNManager"; - - String[] vos = session.getOriginalScopeName().split("/"); - System.out.println("querying for vo: /" + vos[1]); - - endpoint.setAddress(new Address(url)); - GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator(); - GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint); - pt = (GHNManagerPortType) ServiceContextManager.applySecurity(pt, GCUBEScope.getScope("/" + vos[1]), session.getCredential()); - pt.removeScope(session.getOriginalScopeName()); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** {@inheritDoc}*/ - public void addRIToScope(String url, String className, String name) { - //TODO: this will probably change... - - EndpointReferenceType endpoint = new EndpointReferenceType(); - try { - endpoint.setAddress(new Address(url)); - GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator(); - GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint); - pt = (GHNManagerPortType) ServiceContextManager.applySecurity(pt, session); - ScopeRIParams params = new ScopeRIParams(); - params.setClazz(className); - params.setName(name); - params.setScope(session.getOriginalScopeName()); - pt.addRIToScope(params); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** {@inheritDoc}*/ - public void addExternalRIToVRE(File file) - { - GCUBEExternalRunningInstance ri = null; - try { - ri = GHNContext.getImplementation(GCUBEExternalRunningInstance.class); - } catch (Exception e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - - String ret = ""; - if(file.exists()){ - try { - ri.load(new FileReader(file)); - } catch (Exception e) { - String message = "Error while loading profile for the External Running Instance with id=" + ri.getID() + "\n"; - System.out.println(message); - e.printStackTrace(); - ret += message; - } - }else{ - String message = "An error occur during the approval of the External Running Instance with id=" + ri.getID() + "\n"; - System.out.println(message); - ret += message; - } - - - - try { - // TODO Change this - - publisher.registerGCUBEResource(ri, session.getScope(), new PortalSecurityManager(session)); - } catch (ISPublisherException e) { - String message = "Registration error for the External Running Instance with id=" + ri.getID() + "\n"; - System.out.println(message); - e.printStackTrace(); - ret += message; - } - - } - - /** {@inheritDoc}*/ - public void removeExternalRIToVRE(String id) - { - try { - // TODO Change this - - publisher.removeGCUBEResource(id, GCUBEExternalRunningInstance.TYPE, session.getScope(), new PortalSecurityManager(session)); - } catch (ISPublisherException e) { - String message = "Registration error for the External Running Instance with id=" +id + "\n"; - System.out.println(message); - e.printStackTrace(); - } - - } - - /** {@inheritDoc}*/ - public boolean existsGHN(String namePort) - { - GCUBEGenericQuery query; - try { - System.out.println("GHN: " + namePort); - query = client.getQuery(GCUBEGenericQuery.class);query.setExpression("for $ghn in collection(\"/db/Profiles/GHN\")//Document/Data/child::*[local-name()='Profile']/Resource where $ghn/Profile/GHNDescription/Name/string() eq '" + namePort + "' return $ghn"); - String[] vos = session.getOriginalScopeName().split("/"); - System.out.println("querying for vo: /" + vos[1]); - List resources = client.execute(query, GCUBEScope.getScope("/" + vos[1])); - if(resources == null || resources.size() == 0) - { - System.out.println("Resources are null or empty"); - return false; - } - else - { - System.out.println("Found resources!!!!"); - return true; - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return false; - } - - - /** - * Returns all profiles of collections present in the given scope. - * @param scope the scope of the collections. - * @return a list of collections profile. - * @throws Exception when an error occurs. - */ - public List getCollections(GCUBEScope scope) throws Exception - { - - - try { - GCUBECollectionQuery collectionquery = client.getQuery(GCUBECollectionQuery.class); - - return client.execute(collectionquery,scope); - - } catch (Exception e) { - System.out.println("Error during Collections retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during Collections retrieving in scope "+scope.getName(), e); - } - } - - - /** - * Return all metadata-collections associated with the given collection. - * @param scope the scope of the metadata collections. - * @param collectionID the associated collection. - * @return a list of metadata collections profile. - * @throws Exception - */ - public List getMCollections(GCUBEScope scope, String collectionID) throws Exception - { - - try { - GCUBEMCollectionQuery mcolQuery = client.getQuery(GCUBEMCollectionQuery.class); - - mcolQuery.addGenericCondition("$result/child::*[local-name()='Profile']/RelatedCollection/CollectionID/string() eq '"+collectionID+"'"); - - return client.execute(mcolQuery,scope); - - } catch (Exception e) { - System.out.println("Error during MCollections retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during MCollections retrieving in scope "+scope.getName(), e); - } - - } - - - /** - * Return all XML indices associated with the given metadata collection. - * @param scope the indices scope. - * @param mcollectionID the metadata collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getXMLIndices(GCUBEScope scope, String mcollectionID) throws Exception - { - try { - - WSResourceQuery queryXMLIndices = client.getQuery(WSResourceQuery.class); - - queryXMLIndices.addAtomicConditions(new AtomicCondition("//gc:ServiceClass", "MetadataManagement"), - new AtomicCondition("//gc:ServiceName","XMLIndexer"), - new AtomicCondition("/child::*[local-name()='Id']", mcollectionID), - new AtomicCondition("/child::*[local-name()='AccessType']", "GCUBEDaix")); - - - return client.execute(queryXMLIndices, scope); - - } catch (Exception e) { - System.out.println("Error during Indices retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during Indices retrieving in scope "+scope.getName(), e); - } - - } - - /** - * Return all indices associated with a given metadata collection. - * @param scope the indices scope. - * @param mcollectionID the metadata collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getIndices(GCUBEScope scope, String mcollectionID) throws Exception - { - - try { - - WSResourceQuery queryXMLIndices = client.getQuery(WSResourceQuery.class); - - queryXMLIndices.addAtomicConditions(new AtomicCondition("//gc:ServiceClass", "Index"), - new AtomicCondition("/child::*[local-name()='CollectionID']",mcollectionID)); - - return client.execute(queryXMLIndices, scope); - - } catch (Exception e) { - System.out.println("Error during Indices retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during Indices retrieving in scope "+scope.getName(), e); - } - - } - - - /** - * Return all indices associated with a given collection. - * @param scope the indices scope. - * @param collectionID the collection id. - * @return a list of Resource document. - * @throws Exception - */ - public List getCollectionIndices(GCUBEScope scope, String collectionID) throws Exception - { - try { - - WSResourceQuery queryXMLIndices = client.getQuery(WSResourceQuery.class); - - queryXMLIndices.addAtomicConditions(new AtomicCondition("//gc:ServiceClass", "Index"), - new AtomicCondition("/child::*[local-name()='CollectionID']",collectionID)); - - return client.execute(queryXMLIndices, scope); - - } catch (Exception e) { - System.out.println("Error during collection Indices retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during collection Indices retrieving in scope "+scope.getName(), e); - } - - } - - - - /** - * Return a collection profile. - * @param scope the collection scope. - * @param collectionID the collection id. - * @return a collection profile. - * @throws Exception - */ - public GCUBECollection getCollection(GCUBEScope scope, String collectionID) throws Exception - { - try { - GCUBECollectionQuery Collectionquery = client.getQuery(GCUBECollectionQuery.class); - Collectionquery.addAtomicConditions(new AtomicCondition("//ID",collectionID)); - return client.execute(Collectionquery,scope).get(0); - - } catch (Exception e) { - System.out.println("Error during Collection (by ID "+collectionID+") retrieving in scope "+scope.getName()); - e.printStackTrace(); - throw new Exception("Error during Collection (by ID "+collectionID+") retrieving in scope "+scope.getName(), e); - } - - } -} - diff --git a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/VREGeneratorEvo.java b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/VREGeneratorEvo.java index 4ca2fbe..138a607 100644 --- a/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/VREGeneratorEvo.java +++ b/src/main/java/org/gcube/application/framework/vremanagement/vremanagement/impl/VREGeneratorEvo.java @@ -1,40 +1,34 @@ package org.gcube.application.framework.vremanagement.vremanagement.impl; +import static org.gcube.resources.discovery.icclient.ICFactory.clientFor; +import static org.gcube.resources.discovery.icclient.ICFactory.queryFor; +import static org.gcube.vremanagement.vremodel.cl.plugin.AbstractPlugin.factory; +import static org.gcube.vremanagement.vremodel.cl.plugin.AbstractPlugin.manager; + import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; -import javax.xml.rpc.ServiceException; - -import org.apache.axis.message.addressing.Address; -import org.apache.axis.message.addressing.EndpointReference; -import org.apache.axis.message.addressing.EndpointReferenceType; -import org.gcube.application.framework.core.cache.RIsManager; -import org.gcube.application.framework.core.security.ServiceContextManager; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.vremanagement.vremanagement.VREGeneratorInterface; -import org.gcube.common.core.scope.GCUBEScope; -import org.gcube.common.core.types.VOID; -import org.gcube.common.core.utils.logging.GCUBEClientLog; -import org.gcube.informationsystem.cache.SrvType; -import org.gcube.vremanagement.vremodeler.stubs.FunctionalityList; -import org.gcube.vremanagement.vremodeler.stubs.FunctionalityNodes; -import org.gcube.vremanagement.vremodeler.stubs.GHNArray; -import org.gcube.vremanagement.vremodeler.stubs.GHNList; -import org.gcube.vremanagement.vremodeler.stubs.GHNType; -import org.gcube.vremanagement.vremodeler.stubs.GHNsPerFunctionality; -import org.gcube.vremanagement.vremodeler.stubs.ModelerFactoryPortType; -import org.gcube.vremanagement.vremodeler.stubs.ModelerServicePortType; -import org.gcube.vremanagement.vremodeler.stubs.ReportList; -import org.gcube.vremanagement.vremodeler.stubs.RunningInstanceMessage; -import org.gcube.vremanagement.vremodeler.stubs.SelectedResourceDescriptionType; -import org.gcube.vremanagement.vremodeler.stubs.SetFunctionality; -import org.gcube.vremanagement.vremodeler.stubs.VREDescription; -import org.gcube.vremanagement.vremodeler.stubs.service.ModelerFactoryServiceAddressingLocator; -import org.gcube.vremanagement.vremodeler.stubs.service.ModelerServiceAddressingLocator; +import org.gcube.common.resources.gcore.GCoreEndpoint; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.resources.discovery.client.api.DiscoveryClient; +import org.gcube.resources.discovery.client.queries.api.SimpleQuery; +import org.gcube.vremanagement.vremodel.cl.proxy.Manager; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityItem; +import org.gcube.vremanagement.vremodel.cl.stubs.types.FunctionalityNodes; +import org.gcube.vremanagement.vremodel.cl.stubs.types.GHN; +import org.gcube.vremanagement.vremodel.cl.stubs.types.GHNsPerFunctionality; +import org.gcube.vremanagement.vremodel.cl.stubs.types.Report; +import org.gcube.vremanagement.vremodel.cl.stubs.types.SelectedResourceDescriptionType; +import org.gcube.vremanagement.vremodel.cl.stubs.types.VREDescription; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import edu.emory.mathcs.backport.java.util.Arrays; /** @@ -43,16 +37,14 @@ import org.gcube.vremanagement.vremodeler.stubs.service.ModelerServiceAddressing * */ public class VREGeneratorEvo implements VREGeneratorInterface { - - GCUBEClientLog log = new GCUBEClientLog("ASL_VRE"); - + + private static final Logger log = LoggerFactory.getLogger(VREGeneratorEvo.class); + private static final String VRE_MODELER_SERVICE_NAME = "VREModeler"; String scope; ASLSession session; - ModelerServicePortType modelPortType; - - private final static String MODELERS_NO = "MODELERS_NO"; + Manager modelPortType; - protected static AtomicInteger vreId = new AtomicInteger(0); +protected static AtomicInteger vreId = new AtomicInteger(0); /** * @param session the d4s session @@ -60,63 +52,74 @@ public class VREGeneratorEvo implements VREGeneratorInterface { */ public VREGeneratorEvo(ASLSession session, String id) { this(session); - - EndpointReferenceType epr = getEprGivenID(id); - log.info("VREGeneratorEvo called on VRE id (epr)" + epr + " scope: " + session.getScope().toString()); - this.scope = session.getScopeName(); - this.session = session; - modelPortType = applySecurityEPR(epr); + log.info("VREGeneratorEvo called on VRE id " + id + " scope: " + session.getScope()); + this.scope = session.getScope(); + this.session = session; + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + modelPortType = manager().at(factory().build().getEPRbyId(id)).build(); + ScopeProvider.instance.set(currScope); } public boolean isVreModelerServiceUp() { - return Integer.parseInt(session.getAttribute(MODELERS_NO).toString()) > 0; + ScopeProvider.instance.set(scope); + SimpleQuery query = queryFor(GCoreEndpoint.class); + query.addCondition("$resource/Profile/ServiceName/text() eq '"+ VRE_MODELER_SERVICE_NAME +"'"); + query.addCondition("$resource/Profile/DeploymentData/Status/text() eq 'ready'"); + + DiscoveryClient client = clientFor(GCoreEndpoint.class); + + List r = client.submit(query); + if (r == null || r.isEmpty()) + return false; + return true; } - + /** - * @param session the d4s session + * @param session the session */ public VREGeneratorEvo(ASLSession session) { super(); log.info("VREGeneratorEvo scope: " + session.getScope().toString()); this.scope = session.getScopeName(); this.session = session; - modelPortType = null; - getModelPortType(); + modelPortType = manager().at(factory().build().createResource()).build(); + } + + @Override + public void setVREModel(String name, String desc, String designer, String manager, long startTime, long endTime) throws RemoteException { + Calendar start = Calendar.getInstance(); + start.setTimeInMillis(startTime); + + Calendar end = Calendar.getInstance(); + end.setTimeInMillis(endTime); + + log.debug("StartTime = " + start.getTime()); + log.debug("EndTime = " + end.getTime()); + + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + modelPortType.setDescription(name, desc, designer, manager, start, end); + ScopeProvider.instance.set(currScope); + } + + @Override + public String getVREepr() { + factory().build(); + return null; } /** * @param session the d4s session * @return the VRE names * */ - public ReportList getAllVREs(ASLSession session) { - EndpointReferenceType serviceEPR = new EndpointReferenceType(); - ModelerFactoryPortType mFPType = null; - ModelerFactoryServiceAddressingLocator mFSLocator = new ModelerFactoryServiceAddressingLocator(); - EndpointReference[] modelerURIs; - try { - modelerURIs = RIsManager.getInstance().getISCache(GCUBEScope.getScope(scope)).getEPRsFor("VREManagement", "VREModeler", SrvType.FACTORY.name()); - } catch (Exception e1) { - e1.printStackTrace(); - return null; - } - for (int i = 0; i < modelerURIs.length; i++) { - try { - System.out.println("getModelFactoryPortTypePort(epr)"); - session.setScope(scope); - serviceEPR.setAddress(new Address(modelerURIs[vreId.getAndIncrement() % modelerURIs.length].getAddress().toString())); - mFPType = (ModelerFactoryPortType) ServiceContextManager.applySecurity(mFSLocator.getModelerFactoryPortTypePort(serviceEPR), session); - return mFPType.getAllVREs(new VOID()); - - } catch (ServiceException e) { - e.printStackTrace(); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - return null; + public List getAllVREs(ASLSession session) { + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + List toReturn = factory().build().getAllVREs(); + ScopeProvider.instance.set(currScope); + return toReturn; } /** @@ -124,60 +127,21 @@ public class VREGeneratorEvo implements VREGeneratorInterface { * @param id the id of the VRE to be removed */ public void removeVRE(ASLSession session, String id) { - - - EndpointReferenceType serviceEPR = new EndpointReferenceType(); - ModelerFactoryPortType mFPType = null; - ModelerFactoryServiceAddressingLocator mFSLocator = new ModelerFactoryServiceAddressingLocator(); - EndpointReference[] modelerURIs; - try { - modelerURIs = RIsManager.getInstance().getISCache(GCUBEScope.getScope(scope)).getEPRsFor("VREManagement", "VREModeler", SrvType.FACTORY.name()); - } catch (Exception e1) { - e1.printStackTrace(); - return; - } - for (int i = 0; i < modelerURIs.length; i++) { - try { - System.out.println("getModelFactoryPortTypePort(epr)"); - - serviceEPR.setAddress(new Address(modelerURIs[vreId.getAndIncrement() % modelerURIs.length].getAddress().toString())); - session.setScope(scope); - mFPType = (ModelerFactoryPortType) ServiceContextManager.applySecurity(mFSLocator.getModelerFactoryPortTypePort(serviceEPR), session); - - System.out.println("ID RECEIVED TO REMOVE:" + id); - - mFPType.removeVRE(id); - break; - - } catch (ServiceException e) { - e.printStackTrace(); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - /** - * - * @param epr - * @return - */ - protected ModelerServicePortType applySecurityEPR(EndpointReferenceType epr) { - try { - ModelerServiceAddressingLocator mSALocator = new ModelerServiceAddressingLocator(); - session.setScope(scope); - modelPortType = ServiceContextManager.applySecurity(mSALocator.getModelerServicePortTypePort(epr),session); - return modelPortType; - } catch (Exception e) { - e.printStackTrace(); - return null; - } + System.out.println("ID RECEIVED TO REMOVE:" + id); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + factory().build().removeVRE(id); + ScopeProvider.instance.set(currScope); } + @Override public String checkVREStatus() throws RemoteException { - return modelPortType.checkStatus(new VOID()); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + String toReturn = modelPortType.checkStatus(); + ScopeProvider.instance.set(currScope); + return toReturn; } /** @@ -185,7 +149,10 @@ public class VREGeneratorEvo implements VREGeneratorInterface { */ @Override public void deployVRE() throws RemoteException { - modelPortType.deployVRE(new VOID()); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + modelPortType.deployVRE(); + ScopeProvider.instance.set(currScope); } @@ -193,57 +160,75 @@ public class VREGeneratorEvo implements VREGeneratorInterface { // TODO Auto-generated method stub return null; } - + public FunctionalityNodes getSelectedFunctionality() throws Exception { - FunctionalityNodes list = modelPortType.getFunctionalityNodes(new VOID()); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + FunctionalityNodes list = modelPortType.getFunctionalityNodes(); + ScopeProvider.instance.set(currScope); return list; } @Override - public List getGHNs() throws RemoteException { + public List getGHNs() throws RemoteException { log.debug("Asking gHN list to service"); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + List toReturn = new ArrayList(); + FunctionalityNodes list = modelPortType.getFunctionalityNodes(); - List toReturn = new ArrayList(); - FunctionalityNodes list = modelPortType.getFunctionalityNodes(new VOID()); - - GHNList ghns = list.getSelectableGHNs(); //selezionabili per le missing func. - GHNType[] types = ghns.getList(); - - for (int i = 0; i < types.length; i++) { + List types = list.selectableGHNs(); //selezionabili per le missing func. + + for (int i = 0; i < types.size(); i++) { try { - log.debug("returned GHN: " + types[i].getHost()); - toReturn.add(new GHNType(types[i].getHost(), types[i].getId(), types[i].getMemory(), types[i].getRelatedRIs(), types[i].isSecurityEnabled(), - types[i].isSelected(), types[i].getSite())); + log.debug("returned GHN: " + types.get(i).host()); + toReturn.add(new GHN( types.get(i).id(), + types.get(i).host(), + types.get(i).securityEnabled(), + types.get(i).memory(), + types.get(i).site(), + types.get(i).relatedRIs(), + types.get(i).selected())); } catch (NullPointerException e) { e.printStackTrace(); return toReturn; } } + ScopeProvider.instance.set(currScope); return toReturn; } - + @Override public GHNsPerFunctionality[] getGHNsPerFunctionality() throws RemoteException { - FunctionalityNodes list = modelPortType.getFunctionalityNodes(new VOID()); - return list.getFunctionalities(); - - } -// RunningInstanceMessage[] ris = list.getFunctionalities()[1].getMissingServices(); //ci sono n RunningInstances (Service) Mancanti -// ris[0]. -// list.getFunctionalities()[1].getGhns(); //verranno aggiunti per la funzionalit - + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + FunctionalityNodes list = modelPortType.getFunctionalityNodes(); + ScopeProvider.instance.set(currScope); + return list.functionalities().toArray(new GHNsPerFunctionality[0]); + } + // RunningInstanceMessage[] ris = list.getFunctionalities()[1].getMissingServices(); //ci sono n RunningInstances (Service) Mancanti + // ris[0]. + // list.getFunctionalities()[1].getGhns(); //verranno aggiunti per la funzionalit + + + @SuppressWarnings("unchecked") @Override - public void setFunctionality(int[] funcIds, SelectedResourceDescriptionType[] selResDesc) throws RemoteException { - SetFunctionality sf = new SetFunctionality(funcIds, selResDesc); - modelPortType.setFunctionality(sf); + public void setFunctionality(Integer[] funcIds, SelectedResourceDescriptionType[] selResDesc) throws RemoteException { + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + modelPortType.setFunctionality(Arrays.asList(funcIds), Arrays.asList(selResDesc)); + ScopeProvider.instance.set(currScope); } @Override - public FunctionalityList getFunctionality() throws Exception { - FunctionalityList list = modelPortType.getFunctionality(new VOID()); + public List getFunctionality() throws Exception { + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + List list = modelPortType.getFunctionalities(); + ScopeProvider.instance.set(currScope); return list; } @@ -251,152 +236,35 @@ public class VREGeneratorEvo implements VREGeneratorInterface { return null; } - public String getQuality() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - /** * first call */ @Override public VREDescription getVREModel() throws RemoteException { - VREDescription desc = modelPortType.getDescription(new VOID()); - + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + VREDescription desc = modelPortType.getDescription(); + ScopeProvider.instance.set(currScope); return desc; } - + + @SuppressWarnings("unchecked") @Override public void setGHNs(String[] selectedGHNIds) throws RemoteException { modelPortType.setUseCloud(false); - GHNArray ghnArray = new GHNArray(selectedGHNIds); - modelPortType.setGHNs(ghnArray); + modelPortType.setGHNs(Arrays.asList(selectedGHNIds)); } - @Override - public void setVREModel(String VREName, String VREDescription, - String VREDesigner, String VREManager, long startTime, long endTime) - throws RemoteException { - VREDescription vreDesc = new VREDescription(); - vreDesc.setDescription(VREDescription); - vreDesc.setDesigner(VREDesigner); - vreDesc.setManager(VREManager); - vreDesc.setName(VREName); - Calendar start = Calendar.getInstance(); - start.setTimeInMillis(startTime); - vreDesc.setStartTime(start); - Calendar end = Calendar.getInstance(); - end.setTimeInMillis(endTime); - vreDesc.setEndTime(end); - - log.debug("StartTime = " + start.getTime()); - log.debug("EndTime = " + end.getTime()); - - modelPortType.setDescription(vreDesc); - } + public void setVREtoPendingState() throws RemoteException { - modelPortType.setVREtoPendingState(new VOID()); + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + modelPortType.setVREtoPendingState(); + ScopeProvider.instance.set(currScope); } - /** - * - */ - private synchronized void getModelPortType() { - - EndpointReferenceType serviceEPR = new EndpointReferenceType(); - ModelerFactoryPortType mFPType = null; - - EndpointReferenceType VREEndpointReferenceType; - if (modelPortType == null) { - - log.warn("VREEndpointReferenceType is null"); - ModelerFactoryServiceAddressingLocator mFSLocator = new ModelerFactoryServiceAddressingLocator(); - - EndpointReference[] modelerURIs; - try { - - modelerURIs = RIsManager.getInstance().getISCache(GCUBEScope.getScope(scope)).getEPRsFor("VREManagement", "VREModeler", SrvType.FACTORY.name()); - - - } catch (Exception e1) { - e1.printStackTrace(); - return; - } - log.debug("vre modelers: " + modelerURIs.length); - session.setAttribute(MODELERS_NO, modelerURIs.length); - for (int i = 0; i < modelerURIs.length; i++) { - try { - System.out.println("getModelFactoryPortTypePort(epr)"); - - serviceEPR.setAddress(new Address(modelerURIs[vreId.getAndIncrement() % modelerURIs.length].getAddress().toString())); - session.setScope(scope); - mFPType = ServiceContextManager.applySecurity(mFSLocator.getModelerFactoryPortTypePort(serviceEPR), session); - VREEndpointReferenceType = mFPType.createResource(new VOID()); - mFPType.getAllVREs(new VOID()); - ModelerServiceAddressingLocator mSALocator = new ModelerServiceAddressingLocator(); - session.setScope(scope); - modelPortType = ServiceContextManager.applySecurity(mSALocator.getModelerServicePortTypePort(VREEndpointReferenceType), session); - // Attaching Credential to port type - System.out.println("Attaching Credential to port type"); - break; - } catch (ServiceException e) { - e.printStackTrace(); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - new Random(System.currentTimeMillis()).nextInt(modelerURIs.length); - } - } - } else - log.debug("modelPortType!=null"); - - } - - /** {@inheritDoc}*/ - public String getVREepr() { - return modelPortType.toString(); - } - - /** - * return the per given an id - * @param id - * @return - */ - private EndpointReferenceType getEprGivenID(String id) { - EndpointReferenceType serviceEPR = new EndpointReferenceType(); - ModelerFactoryPortType mFPType = null; - ModelerFactoryServiceAddressingLocator mFSLocator = new ModelerFactoryServiceAddressingLocator(); - EndpointReference[] modelerURIs; - try { - session.setScope(scope); - modelerURIs = RIsManager.getInstance().getISCache(session.getScope()).getEPRsFor("VREManagement", "VREModeler", SrvType.FACTORY.name()); - } catch (Exception e1) { - e1.printStackTrace(); - return null; - } - for (int i = 0; i < modelerURIs.length; i++) { - try { - log.debug("getModelFactoryPortTypePort(epr)"); - - serviceEPR.setAddress(new Address(modelerURIs[vreId.getAndIncrement() % modelerURIs.length].getAddress().toString())); - session.setScope(scope); - mFPType = (ModelerFactoryPortType) ServiceContextManager.applySecurity(mFSLocator.getModelerFactoryPortTypePort(serviceEPR), session); - return mFPType.getEPRbyId(id); - - } catch (ServiceException e) { - e.printStackTrace(); - } catch (RemoteException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - return null; - } public boolean isCloudAvailable() { //TODO: check actual availability @@ -409,27 +277,19 @@ public class VREGeneratorEvo implements VREGeneratorInterface { */ public boolean isCloudSelected() { System.out.println("isCloudSelected()"); - boolean toReturn = false; - try { - toReturn = modelPortType.isUseCloud(new VOID()); - } catch (RemoteException e) { - e.printStackTrace(); - return false; - } + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope); + boolean toReturn = modelPortType.isUseCloud(); + ScopeProvider.instance.set(currScope); return toReturn; } public boolean setCloudDeploy(int virtualMachines) { - try { - log.debug("setUseCloud(true)"); - modelPortType.setUseCloud(true); - log.debug("setCloudVMs #: " + virtualMachines); - modelPortType.setCloudVMs(virtualMachines); - } catch (RemoteException e) { - e.printStackTrace(); - return false; - } + log.debug("setUseCloud(true)"); + modelPortType.setUseCloud(true); + log.debug("setCloudVMs #: " + virtualMachines); + modelPortType.setCloudVMs(virtualMachines); return true; } @@ -438,15 +298,9 @@ public class VREGeneratorEvo implements VREGeneratorInterface { */ public int getCloudVMSelected() { int toReturn = -1; - try { - toReturn = modelPortType.getCloudVMs(new VOID()); - } catch (RemoteException e) { - e.printStackTrace(); - return toReturn; - } + toReturn = modelPortType.getCloudVMs(); return toReturn; } - - + }