git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/vre-management/VREModeler@18577 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
6091eac3ff
commit
850c821a1a
|
@ -10,7 +10,7 @@ CREATE CACHED TABLE FUNCTIONALITY(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(S
|
|||
CREATE CACHED TABLE METADATAFORMAT(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL,SCHEMAURI VARCHAR NOT NULL,LANGUAGE VARCHAR NOT NULL)
|
||||
CREATE CACHED TABLE NATIVEMDF(MDCOLLID VARCHAR NOT NULL,MDFID VARCHAR NOT NULL,PRIMARY KEY(MDCOLLID,MDFID),CONSTRAINT SYS_FK_178 FOREIGN KEY(MDCOLLID) REFERENCES MCOLLECTION(ID),CONSTRAINT SYS_FK_179 FOREIGN KEY(MDFID) REFERENCES METADATAFORMAT(ID))
|
||||
CREATE CACHED TABLE VRERELATEDCOLLECTION(VREID VARCHAR NOT NULL,COLLID VARCHAR NOT NULL,PRIMARY KEY(VREID,COLLID))
|
||||
CREATE CACHED TABLE VRERELATEDGHN(VREID VARCHAR NOT NULL,GHNID VARCHAR NOT NULL,PRIMARY KEY(VREID,GHNID))
|
||||
CREATE CACHED TABLE VRERELATEDGHN(VREID VARCHAR NOT NULL,GHNID VARCHAR NOT NULL, ISCANDIDATE BOOLEAN,PRIMARY KEY(VREID,GHNID))
|
||||
CREATE CACHED TABLE VRERELATEDCS(VREID VARCHAR NOT NULL,CSID VARCHAR NOT NULL,PRIMARY KEY(VREID,CSID))
|
||||
CREATE CACHED TABLE VRERELATEDMETADATAFORMAT(VREID VARCHAR,COLLID VARCHAR,MFID VARCHAR)
|
||||
CREATE CACHED TABLE SERVICES(ID INTEGER NOT NULL,NAME VARCHAR NOT NULL,CLASS VARCHAR NOT NULL, VERSION VARCHAR NOT NULL, PRIMARY KEY(ID,NAME,CLASS),CONSTRAINT SYS_FK_189 FOREIGN KEY(ID) REFERENCES FUNCTIONALITY(ID))
|
||||
|
|
|
@ -119,6 +119,7 @@
|
|||
|
||||
<xsd:complexType name="GHNArray">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="CandidateGHN" type="xsd:string" nillable="true" minOccurs="1" maxOccurs="1" />
|
||||
<xsd:element name="GHNElement" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
|
|
@ -132,15 +132,16 @@ public class ModelerService {
|
|||
DBInterface.connect();
|
||||
res= DBInterface.queryDB("select * from GHN ORDER BY GHN.host;");
|
||||
|
||||
ResultSet resRelated= DBInterface.queryDB("select ghnid from VRERELATEDGHN where VRERELATEDGHN.vreid='"+getResource().getId()+"';");
|
||||
while(resRelated.next())
|
||||
ResultSet resRelated= DBInterface.queryDB("select ghnid, ISCANDIDATE from VRERELATEDGHN where VRERELATEDGHN.vreid='"+getResource().getId()+"';");
|
||||
String candidatedGHN="";
|
||||
while(resRelated.next()){
|
||||
relatedGHN.add(resRelated.getString(1));
|
||||
|
||||
|
||||
if (resRelated.getBoolean(2)) candidatedGHN=resRelated.getString(1);
|
||||
}
|
||||
return XMLUtil.PrepareGHNsXML(res, relatedGHN,candidatedGHN);
|
||||
}catch(Exception e) {
|
||||
logger.error("VDL Model: error retreiving GHNs",e);
|
||||
logger.error("VRE Model: error retreiving GHNs",e);
|
||||
throw new GCUBEFault(e);}
|
||||
return XMLUtil.PrepareGHNsXML(res, relatedGHN);
|
||||
}
|
||||
|
||||
|
||||
|
@ -155,17 +156,19 @@ public class ModelerService {
|
|||
try{
|
||||
String instanceID=(String) getResource().getId();
|
||||
DBInterface.ExecuteUpdate("DELETE FROM VRERELATEDGHN WHERE VRERELATEDGHN.vreid='"+instanceID+"';");
|
||||
|
||||
|
||||
String dlKey=instanceID;
|
||||
|
||||
ArrayList<String[]> values= new ArrayList<String[]>(request.getGHNElement().length);
|
||||
ArrayList<String> row=null;
|
||||
for (String ghnId: request.getGHNElement())
|
||||
{
|
||||
row= new ArrayList<String>(2);
|
||||
row= new ArrayList<String>(3);
|
||||
row.add(dlKey);
|
||||
row.add(ghnId);
|
||||
values.add(row.toArray(new String[2]));
|
||||
if (request.getCandidateGHN().compareTo(ghnId)==0) row.add("true");
|
||||
else row.add("false");
|
||||
values.add(row.toArray(new String[3]));
|
||||
}
|
||||
|
||||
DBInterface.insertInto("VRERELATEDGHN", values.toArray(new String[0][0]));
|
||||
|
|
|
@ -65,17 +65,23 @@ public class DeployVRE extends Thread{
|
|||
|
||||
public void run() {
|
||||
try {
|
||||
ResultSet resRelatedGHN=DBInterface.queryDB("select VRERELATEDGHN.ghnid, GHN.domain from VRERELATEDGHN, GHN where GHN.id=VRERELATEDGHN.ghnid and VRERELATEDGHN.vreid='"+this.resourceId+"' ORDER BY GHN.host; ");
|
||||
ResultSet resRelatedGHN=DBInterface.queryDB("select VRERELATEDGHN.ghnid, GHN.domain, VRERELATEDGHN.ISCANDIDATE from VRERELATEDGHN, GHN where GHN.id=VRERELATEDGHN.ghnid and VRERELATEDGHN.vreid='"+this.resourceId+"' ORDER BY GHN.host; ");
|
||||
|
||||
List<Couple<String, String>> GHNList= new ArrayList<Couple<String, String>>();
|
||||
while (resRelatedGHN.next()) GHNList.add(new Couple<String, String>(resRelatedGHN.getString(1),resRelatedGHN.getString(2)));
|
||||
String candidateGHN=null;
|
||||
while (resRelatedGHN.next()) {
|
||||
if(resRelatedGHN.getBoolean(3))
|
||||
candidateGHN=resRelatedGHN.getString(1);
|
||||
else GHNList.add(new Couple<String, String>(resRelatedGHN.getString(1),resRelatedGHN.getString(2)));
|
||||
|
||||
}
|
||||
if (GHNList.size()<2){
|
||||
throw new Exception("No ghn Selected (at least 2 GHNs have to be selcted)");
|
||||
}
|
||||
|
||||
|
||||
if (!deployManagerOnVRE(GHNList)){
|
||||
//transforming the Couple<String, String> to a ghnid List<String>
|
||||
if (!deployManagerOnVRE(GHNList, candidateGHN)){
|
||||
//transforming the Pair<String, String> to a ghnid List<String>
|
||||
List<String> ghnEpuredList = new ArrayList<String>();
|
||||
for (Couple<String, String> cpl: GHNList) ghnEpuredList.add(cpl.first);
|
||||
|
||||
|
@ -105,7 +111,7 @@ public class DeployVRE extends Thread{
|
|||
}
|
||||
|
||||
|
||||
private boolean deployManagerOnVRE(List<Couple<String, String>> GHNList) throws GCUBEFault{
|
||||
private boolean deployManagerOnVRE(List<Couple<String, String>> ghnList, String candidateGHN) throws GCUBEFault{
|
||||
String vreName= null;
|
||||
try {
|
||||
DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='Deploying' WHERE VRE.id='"+this.resourceId+"';");
|
||||
|
@ -120,15 +126,19 @@ public class DeployVRE extends Thread{
|
|||
throw new GCUBEFault(e);
|
||||
}
|
||||
|
||||
// Couple<GCUBEScope,Couple<String, String>>> is a triple with first GCUBEScope, second couple: first String is the VREName, second string is the GHNId
|
||||
VREManagerServiceHandler<Boolean, Couple<String, List<Couple<String, String>>>> vreManagerHandler= new VREManagerServiceHandler<Boolean,Couple<String, List<Couple<String, String>>>>(){
|
||||
VREManagerServiceHandler<Boolean, Object[]> vreManagerHandler= new VREManagerServiceHandler<Boolean,Object[]>(){
|
||||
|
||||
@SuppressWarnings("static-access")
|
||||
@SuppressWarnings({ "static-access", "unchecked" })
|
||||
@Override
|
||||
protected Boolean makeCall(VREManagerPortType mbportType)
|
||||
protected Boolean makeCall(VREManagerPortType vreManagerPT)
|
||||
throws Exception {
|
||||
String report;
|
||||
try{
|
||||
|
||||
String vreName=(String) this.getParameter()[0];
|
||||
List<Couple<String, String>> ghnList= (List<Couple<String, String>>) this.getParameter()[1];
|
||||
String candidateGHN=(String) this.getParameter()[2];
|
||||
|
||||
AddResourcesParameters arp= new AddResourcesParameters();
|
||||
ServiceList services= new ServiceList();
|
||||
ServiceItem[] service= new ServiceItem[1];
|
||||
|
@ -138,28 +148,29 @@ public class DeployVRE extends Thread{
|
|||
service[0].setServiceVersion("1.00.00");
|
||||
services.setService(service);
|
||||
|
||||
Couple<String, String> ghnId=null;
|
||||
for (Couple<String, String> cpl: getParameter().second){
|
||||
if (this.usedhost.contains(cpl.second)){
|
||||
ghnId=cpl;
|
||||
break;
|
||||
//preparing the GHN where will be deployed the VREManager
|
||||
if (candidateGHN==null){
|
||||
Couple<String, String> ghnId=null;
|
||||
for (Couple<String, String> cpl: ghnList){
|
||||
if (this.usedhost.contains(cpl.second)){
|
||||
ghnId=cpl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ghnId==null) ghnId=getParameter().second.get(0);
|
||||
if (ghnId==null) ghnId=ghnList.get(0);
|
||||
logger.debug("deploying the VREManager for the vre on "+ ghnId.second);
|
||||
services.setGHN(new String[]{ghnId.first});
|
||||
ghnList.remove(ghnId);
|
||||
}else services.setGHN(new String[]{candidateGHN});
|
||||
|
||||
logger.debug("deploying the VREManager for the vre on "+ ghnId.second);
|
||||
services.setGHN(new String[]{ghnId.first});
|
||||
arp.setServices(services);
|
||||
arp.setTargetScope(this.scope+"/"+this.getParameter().first);
|
||||
|
||||
getParameter().second.remove(ghnId);
|
||||
|
||||
String reportId=mbportType.addResources(arp);
|
||||
arp.setTargetScope(this.scope+"/"+vreName);
|
||||
String reportId=vreManagerPT.addResources(arp);
|
||||
|
||||
int attempt=0;
|
||||
do{
|
||||
Thread.currentThread().sleep(20000);
|
||||
report=mbportType.getReport(reportId);
|
||||
report=vreManagerPT.getReport(reportId);
|
||||
attempt++;
|
||||
getResource().setFirstReport(report);
|
||||
getResource().store();
|
||||
|
@ -174,8 +185,7 @@ public class DeployVRE extends Thread{
|
|||
|
||||
vreManagerHandler.clearBlackboard();
|
||||
vreManagerHandler.setHandled(new GCUBEServiceClientImpl());
|
||||
Couple<String, List<Couple<String, String>>> coupleParams= new Couple<String, List<Couple<String, String>>>(vreName, GHNList);
|
||||
vreManagerHandler.setParameter(coupleParams);
|
||||
vreManagerHandler.setParameter(new Object[]{vreName,ghnList,candidateGHN});
|
||||
vreManagerHandler.scope=this.startingScope;
|
||||
|
||||
try {
|
||||
|
|
|
@ -67,15 +67,15 @@ public abstract class VREManagerServiceHandler<T, P> extends GCUBEServiceHandler
|
|||
protected abstract T makeCall(VREManagerPortType mbportType) throws Exception;
|
||||
|
||||
|
||||
protected void interact(EndpointReferenceType arg0) throws Exception{
|
||||
VREManagerPortType mbpt= null;
|
||||
protected void interact(EndpointReferenceType epr) throws Exception{
|
||||
VREManagerPortType vmpt= null;
|
||||
|
||||
try{
|
||||
VREManagerServiceAddressingLocator mbsal= new VREManagerServiceAddressingLocator();
|
||||
mbpt= mbsal.getVREManagerPortTypePort(arg0);
|
||||
mbpt = GCUBERemotePortTypeContext.getProxy(mbpt,scope, Integer.parseInt((String)ServiceContext.getContext().getProperty("vremanagerTimeout", true)));
|
||||
this.usedhost= arg0.getAddress().getHost();
|
||||
this.setReturnValue(this.makeCall(mbpt));
|
||||
VREManagerServiceAddressingLocator vmsal= new VREManagerServiceAddressingLocator();
|
||||
vmpt= vmsal.getVREManagerPortTypePort(epr);
|
||||
vmpt = GCUBERemotePortTypeContext.getProxy(vmpt,scope, Integer.parseInt((String)ServiceContext.getContext().getProperty("vremanagerTimeout", true)));
|
||||
this.usedhost= epr.getAddress().getHost();
|
||||
this.setReturnValue(this.makeCall(vmpt));
|
||||
}catch(Exception e){e.printStackTrace();throw e; }
|
||||
}
|
||||
|
||||
|
|
|
@ -79,7 +79,8 @@ public class XMLUtil {
|
|||
|
||||
|
||||
|
||||
public static String PrepareGHNsXML(ResultSet res, ArrayList<String> relatedGHNs){
|
||||
@SuppressWarnings("unchecked")
|
||||
public static String PrepareGHNsXML(ResultSet res, ArrayList<String> relatedGHNs, String candidateGHN){
|
||||
Document doc= null;
|
||||
try {
|
||||
doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
|
||||
|
@ -104,7 +105,7 @@ public class XMLUtil {
|
|||
}
|
||||
|
||||
Element ghnEl = addElements(doc, "GHN", new Element[]{
|
||||
createTextElement(doc, "ID",res.getString(1)),
|
||||
createTextElement(doc, "ID",res.getString(1),new Couple<String, String>("VREManagerUse",(candidateGHN.compareTo(res.getString("ID"))==0?"true":"false"))),
|
||||
createTextElement(doc, "Host",res.getString(2)),
|
||||
addElements(doc, "Info", new Element[]{
|
||||
risElement,
|
||||
|
|
Loading…
Reference in New Issue