first Release for new Is

git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/private/alessandro.pieve/resource-management@148281 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Alessandro Pieve 2017-05-03 15:52:41 +00:00
parent c6bc4af914
commit a3422e77de
14 changed files with 593 additions and 135 deletions

View File

@ -84,13 +84,13 @@
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
<!-- new registry deps -->
<dependency>
<groupId>org.gcube.information-system</groupId>
<artifactId>resource-registry-client</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.information-system</groupId>

View File

@ -261,6 +261,9 @@ public class Callbacks {
new AsyncCallback<CompleteResourceProfile>() {
public void onSuccess(final CompleteResourceProfile result) {
Dialog dlg = new Dialog();
dlg.setLayout(new FitLayout());
dlg.setHeading("XML Resource Profile");
@ -273,10 +276,13 @@ public class Callbacks {
// This resource has already been opened
if (TaskbarRegister.contains(result.getID())) {
TaskbarRegister.getTaskbarItem(result.getID()).destroy();
Commands.showPopup("Retrieve Resource Profile", "Refreshing profile for id: " +
result.getID(), 3000);
}
MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL);
TaskbarItem tkItem = new TaskbarItem(
StatusHandler.getStatus().getCurrentScope(),
result.getType(),
@ -286,12 +292,16 @@ public class Callbacks {
result.getTitle(),
"resource-profile-taskbar-item",
"profile-big-icon");
/*
tkItem.getRelatedWindow().setMainWidget(
new ResourceProfilePanel(
result.getType(),
result.getXmlRepresentation(),
result.getHtmlRepresentation()).getWidget());
TaskbarRegister.registerTaskbarWidget(result.getID(), tkItem);
*/
//TaskbarRegister.registerTaskbarWidget(result.getID(), tkItem);
} catch (Exception e) {
GWT.log("During HTML conversion", e);
} finally {
@ -312,6 +322,9 @@ public class Callbacks {
public void onSuccess(final Tuple<String> result) {
if (result.size() < 3) {
MessageBox.alert("Invalid Report Received", "Don't know why :(", null);
Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID);
@ -339,6 +352,8 @@ public class Callbacks {
reportID, 3000);
}
MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL);
TaskbarItem tkItem = new TaskbarItem(
StatusHandler.getStatus().getCurrentScope(),
ResourceTypeDecorator.DeployReport,

View File

@ -196,6 +196,7 @@ public class Commands {
}
public static final void doGetResourceProfileByID(final Object caller, final String scope, final String resourceID) {
ProxyRegistry.getProxyInstance().getResourceByID(
scope,
null, // no type specified
@ -217,6 +218,8 @@ public class Commands {
"Getting Profile details for " + FWSTranslate.getFWSNameFromLabel(resourceType) + ": " + resourceID,
WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()
);
ProxyRegistry.getProxyInstance().getResourceByID(
scope,
resourceType,
@ -237,6 +240,8 @@ public class Commands {
return;
}
GWT.log("TEST--- on handleGetDeploymentReport", null);
Dialog dlg = new Dialog();
dlg.setLayout(new FitLayout());
dlg.setHeading("XML Resource Profile");
@ -290,6 +295,8 @@ public class Commands {
return;
}
Dialog dlg = new Dialog();
dlg.setLayout(new FitLayout());
dlg.setHeading("XML Resource Profile");
@ -559,9 +566,13 @@ public class Commands {
public static void showPopup(final String title, final String text) {
showPopup(title, text, Configuration.popupDelay);
}
public static void showPopup(final String title, final String text, final int delayMills) {
InfoConfig cfg = new InfoConfig(title, text);
cfg.display = delayMills;
Info.display(cfg);

View File

@ -27,7 +27,7 @@ import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.liferay.portal.kernel.json.JSON;
import com.google.gwt.core.client.GWT;
/**
* @author Daniele Strollo (ISTI-CNR)
@ -107,12 +107,13 @@ public class ResourceProfilePanel extends TabPanel {
this.add(jsonProfilePanel);
*/
/**End new registry ***/
}
public final Component getWidget() {
return this;
}
}

View File

@ -180,10 +180,10 @@ public class ResourcesTreePanel {
if (StatusHandler.getStatus().isLoadGHNatStartup()) {
GWT.log(""+StatusHandler.getStatus().isLoadGHNatStartup());
// Commands.doLoadResourceDetailsGrid(this,
// StatusHandler.getStatus().getCurrentScope(),
// "GHN");
//
Commands.doLoadResourceDetailsGrid(this,
StatusHandler.getStatus().getCurrentScope(),
"GHN");
//select the GHN
for (ModelData md: store.getAllItems()) {
if (md.get("node").toString().compareTo("GHN") == 0)

View File

@ -67,7 +67,15 @@ public class TaskbarItem {
this.detachButton = new TaskbarButton("btn" + id, type, title) {
protected void onClick(final com.extjs.gxt.ui.client.event.ComponentEvent ce) {
relatedWidget.doMinimize();
GWT.log("open tab for id resources:"+resourceID.trim());
Window.open( GWT.getModuleBaseURL().replace("resourcemanagementportlet/", "") +"resource/getResource?resId="+resourceID, "_blank", "");
//TODO Delete a pop up with detail
//relatedWidget.doMinimize();
}
};
this.detachButton.setStyleName("taskbar-button");
@ -79,8 +87,10 @@ public class TaskbarItem {
this.relatedWidget.setHeading(title);
if (Configuration.openProfileOnLoad) {
this.activate();
} else {
this.relatedWidget.setIsMinimized(true);
}
@ -105,19 +115,12 @@ public class TaskbarItem {
closeAll.setIconStyle("closeall-icon");
mnu.add(closeAll);
if (type != null && type == ResourceTypeDecorator.DeployReport) {
MenuItem refresh = new MenuItem("Refresh") {
@Override
protected void onClick(final ComponentEvent be) {
super.onClick(be);
ProxyRegistry.getProxyInstance().checkDeployStatus(
getScope(),
@ -136,8 +139,7 @@ public class TaskbarItem {
protected void onClick(final ComponentEvent be) {
super.onClick(be);
GWT.log("open tab for id resources:"+resourceID.trim());
Window.open("resource/getResource?resId="+resourceID, "_blank", "");
Window.open( GWT.getModuleBaseURL().replace("resourcemanagementportlet/", "") +"resource/getResource?resId="+resourceID, "_blank", "");
}
};
openNewTab.setIconStyle("openTab-icon");
@ -158,6 +160,7 @@ public class TaskbarItem {
@Override
protected void onClick(final ComponentEvent be) {
super.onClick(be);
Commands.doGetResourceProfileByID(
this,
getScope(),

View File

@ -24,6 +24,7 @@ import org.gcube.resourcemanagement.support.shared.util.Configuration;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
@ -63,6 +64,7 @@ public class TaskbarWindow extends Window {
}));
*/
if (Configuration.openProfileOnLoad) {
this.show();
}
}

View File

@ -5,16 +5,19 @@ import java.util.HashMap;
import java.util.List;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.informationsystem.model.entity.Resource;
import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClient;
import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClientFactory;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
import org.gcube.informationsystem.types.TypeBinder.TypeDefinition;
import org.gcube.portlets.admin.resourcemanagement.shared.resource.CacheList;
import org.gcube.portlets.admin.resourcemanagement.shared.resource.UtilityResource;
import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator;
import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile;
/**
*
* @author pieve mail:alessandro.pieve@isti.cnr.it
*
*/
public class RegistryClientRequester {
private static ResourceRegistryClient resourceRegistryClient = ResourceRegistryClientFactory.create();
/**
@ -26,29 +29,31 @@ public class RegistryClientRequester {
*/
//list a resource with a sub category
public static final HashMap<String, ArrayList<String>> getResourcesTree(final ScopeBean queryScope) throws Exception {
public static final HashMap<String, ArrayList<String>> getResourcesTree(String scope) throws Exception {
HashMap<String, ArrayList<String>> retval = new HashMap<String, ArrayList<String>>();
ScopeProvider.instance.set(queryScope.toString());
ScopeProvider.instance.set(scope);
try {
List<TypeDefinition> typeDefinitions = resourceRegistryClient.getSchema(Resource.class, true);
for (TypeDefinition td : typeDefinitions) {
//da eliminare una volta modificato il decoratore
// if (td.getName().equals("EService"))
// retval.put("RunningInstance", UtilityResource.getSubResourcesTree(td.getName(),queryScope.toString()));
if (td.getName().equals("EService"))
retval.put("RunningInstance", UtilityResource.getSubResourcesTreeQuery(td.getName(),scope));
if (td.getName().equals("Configuration"))
retval.put("GenericResource", UtilityResource.getSubResourcesTree(td.getName(),queryScope.toString()));
retval.put("GenericResource", UtilityResource.getSubResourcesTreeQuery(td.getName(),scope));
if (td.getName().equals("HostingNode"))
retval.put("GHN", UtilityResource.getSubResourcesTreeQuery(td.getName(),scope));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retval;
}
@ -57,8 +62,12 @@ public class RegistryClientRequester {
//list string (xml formatted) for table
public static final List<String> getResourcesByTypeSubType( String scope,String type,String subType) throws Exception {
CacheList.resourceid.clear();
//CacheList.resourceid.clear();
ScopeProvider.instance.set(scope);
List<String>resource=new ArrayList<String>();
switch (type) {
case "RunningInstance":
System.out.println("---------------->RunningInstance ");
@ -66,7 +75,12 @@ public class RegistryClientRequester {
break;
case "GenericResource":
System.out.println("---------------->GenericResource ");
resource=UtilityResource.CreateListConfiguration(scope,type,subType);
//resource=UtilityResource.CreateListConfiguration(scope,type,subType);
resource=UtilityResource.CreateListConfigurationQuery(scope,type,subType);
break;
case "GHN":
System.out.println("---------------->GHN ");
resource=UtilityResource.CreateListHostingNode(scope,type,subType);
break;
}
@ -80,7 +94,6 @@ public class RegistryClientRequester {
public static CompleteResourceProfile getResourceByID(
String xml2htmlMapping, String scope, String type,
String resID) {
String representation=CacheList.resourceid.get(resID).getBody();
//get resource by id
@ -88,8 +101,9 @@ public class RegistryClientRequester {
String xmlRepresentation="<Resource>"
+ "<ID>"+resID+"</ID>"
+ "<Type>"+type+"</Type>"
+ representation
+ "</Resource>";
+ "<Scope>"+scope+"</Scope>"
+ representation
+ "</Resource>";
String htmlRepresentation=representation;
ScopeProvider.instance.set(scope);
return new CompleteResourceProfile(resID, ResourceTypeDecorator.valueOf(type),title,xmlRepresentation, htmlRepresentation);

View File

@ -297,17 +297,19 @@ public class ServiceProxyImpl extends RemoteServiceServlet implements ServicePro
/**LISTA DI RISORSE*/
public final HashMap<String, ArrayList<String>> getResourceTypeTree(final String scope) throws Exception {
try {
ScopeBean gscope = new ScopeBean(scope);
//Old Registry
//HashMap<String, ArrayList<String>> results = ISClientRequester.getResourcesTree(getCacheManager(this.getCurrentStatus()), gscope);
//New Registry
HashMap<String, ArrayList<String>> results = RegistryClientRequester.getResourcesTree(gscope);
/*TEST */
for (String key : results.keySet()) {
System.out.println("***->"+key);
}
//before is not necessary
ScopeProvider.instance.set(scope);
HashMap<String, ArrayList<String>> results = RegistryClientRequester.getResourcesTree(scope);
return results;
@ -344,10 +346,6 @@ public class ServiceProxyImpl extends RemoteServiceServlet implements ServicePro
//New code
List<String> request=RegistryClientRequester.getResourcesByTypeSubType(scope, type,null);
return request;
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
@ -447,12 +445,10 @@ public class ServiceProxyImpl extends RemoteServiceServlet implements ServicePro
try {
System.out.println("---------------->getResourcesBySubType type:"+type+ "- subtype:"+subType);
//Old code
//List<String> request=ISClientRequester.getResourcesByType(getCacheManager(this.getCurrentStatus()), new ScopeBean(scope), type, subtype);
//List<String> request=ISClientRequester.getResourcesByType(getCacheManager(this.getCurrentStatus()), new ScopeBean(scope), type, subType);
//New code
List<String> request=RegistryClientRequester.getResourcesByTypeSubType(scope, type,subType);
return request;
@ -469,9 +465,8 @@ public class ServiceProxyImpl extends RemoteServiceServlet implements ServicePro
System.out.println("---------------->getResourceByID scope:"+scope+" type:"+type+" resID:"+resID);
System.out.println("---------------->getResourceByID this.getXML2HTMLMapping():"+this.getXML2HTMLMapping());
//OLD CODE
/*
CompleteResourceProfile profile = ISClientRequester.getResourceByID(this.getXML2HTMLMapping(), new ScopeBean(scope), type, resID);
*/
//CompleteResourceProfile profile = ISClientRequester.getResourceByID(this.getXML2HTMLMapping(), new ScopeBean(scope), type, resID);
//NEW CODE
CompleteResourceProfile profile = RegistryClientRequester.getResourceByID(this.getXML2HTMLMapping(), scope, type, resID);

View File

@ -9,20 +9,17 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.portlets.admin.resourcemanagement.shared.resource.CacheList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ServletResource extends HttpServlet {
private static final Logger log = LoggerFactory.getLogger(ServletResource.class);
/**
*
*/
private static final long serialVersionUID = 8877769357760713039L;
private String message;
public void init() throws ServletException
{
// Do required initialization
log.debug("+++++++++++++Servlet Resource path"+this.getServletContext().getContextPath());
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

View File

@ -11,5 +11,5 @@ public class CacheList {
//use from
//type-subtype, list di resource
public static Map<String,List<String>> resourceTable = Collections.synchronizedMap(new HashMap());
//public static Map<String,List<String>> resourceTable = Collections.synchronizedMap(new HashMap());
}

View File

@ -13,7 +13,7 @@ import javax.xml.bind.annotation.XmlRootElement;
<Name>http:$$cloud.recas.ba.infn.it:8787$occi$compute$0805c2db-ae17-4418-9ecd-8e81552791d2@dded8184-c033-48af-8633-b1adcf3e3308</Name>
<Description>Node deployed to Provider dded8184-c033-48af-8633-b1adcf3e3308with serviceProfile3b6633b7-593a-4626-af19-61295fe23bc1</Description>
</Resource>
* @author pieve
* @author pieve mail:alessandro.pieve@isti.cnr.it
*
*/
@XmlRootElement(name = "Resource")

View File

@ -0,0 +1,204 @@
package org.gcube.portlets.admin.resourcemanagement.shared.resource;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
<Resource>
<ID>a7597dbc-28a3-4ad5-ba6d-19e7a0a2d41d</ID>
<Type>GHN</Type>
<SubType>upv.es</SubType>
<Status>certified</Status>
<Name>niebla.i3m.upv.es:80</Name>
<Uptime>17:07</Uptime>
<LastUpdate>2017-03-28T10:10:33+02:00</LastUpdate>
<LocalAvailableSpace>2832216</LocalAvailableSpace>
<VirtualSize>17957</VirtualSize>
<VirtualAvailable>17676</VirtualAvailable>
<LoadLast1Min>0.87</LoadLast1Min>
<LoadLast5Min>0.36</LoadLast5Min>
<LoadLast15Min>0.39</LoadLast15Min>
<gcf-version>2.1.0-4.2.0-139932</gcf-version>
<ghn-version>2.0.0-4.2.0-132475</ghn-version>
<Scopes>/gcube/devNext;/gcube</Scopes>
</Resource>
*@author pieve mail:alessandro.pieve@isti.cnr.it
*/
@XmlRootElement(name = "Resource")
public class HostingNodeObject {
private String id;
private String type;
private String subType;
private String status;
private String name;
private String upTime;
private String lastUpdate;
private long localAvailableSpace;
private long virtualSize;
private long virtualAvailable;
private String loadLast1Min;
private String loadLast5Min;
private String loadLast15Min;
private String gcfVersion;
private String ghnVersion;
private String scopes;
public HostingNodeObject(){}
public HostingNodeObject(String id, String type, String subType,
String status, String name, String upTime, String lastUpdate,
long localAvailableSpace, long virtualSize,
long virtualAvailable, String loadLast1Min, String loadLast5Min,
String loadLast15Min, String gcfVersion, String ghnVersion,
String scopes) {
super();
this.id = id;
this.type = type;
this.subType = subType;
this.status = status;
this.name = name;
this.upTime = upTime;
this.lastUpdate = lastUpdate;
this.localAvailableSpace = localAvailableSpace;
this.virtualSize = virtualSize;
this.virtualAvailable = virtualAvailable;
this.loadLast1Min = loadLast1Min;
this.loadLast5Min = loadLast5Min;
this.loadLast15Min = loadLast15Min;
this.gcfVersion = gcfVersion;
this.ghnVersion = ghnVersion;
this.scopes = scopes;
}
@XmlElement(name = "ID")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name = "Type")
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@XmlElement(name = "SubType")
public String getSubType() {
return subType;
}
public void setSubType(String subType) {
this.subType = subType;
}
@XmlElement(name = "Status")
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@XmlElement(name = "Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "Uptime")
public String getUpTime() {
return upTime;
}
public void setUpTime(String upTime) {
this.upTime = upTime;
}
@XmlElement(name = "LastUpdate")
public String getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(String lastUpdate) {
this.lastUpdate = lastUpdate;
}
@XmlElement(name = "LocalAvailableSpace")
public long getLocalAvailableSpace() {
return localAvailableSpace;
}
public void setLocalAvailableSpace(long localAvailableSpace) {
this.localAvailableSpace = localAvailableSpace;
}
@XmlElement(name = "VirtualSize")
public long getVirtualSize() {
return virtualSize;
}
public void setVirtualSize(long virtualSize) {
this.virtualSize = virtualSize;
}
@XmlElement(name = "VirtualAvailable")
public long getVirtualAvailable() {
return virtualAvailable;
}
public void setVirtualAvailable(long virtualAvailable) {
this.virtualAvailable = virtualAvailable;
}
@XmlElement(name = "LoadLast1Min")
public String getLoadLast1Min() {
return loadLast1Min;
}
public void setLoadLast1Min(String loadLast1Min) {
this.loadLast1Min = loadLast1Min;
}
@XmlElement(name = "LoadLast5Min")
public String getLoadLast5Min() {
return loadLast5Min;
}
public void setLoadLast5Min(String loadLast5Min) {
this.loadLast5Min = loadLast5Min;
}
@XmlElement(name = "LoadLast15Min")
public String getLoadLast15Min() {
return loadLast15Min;
}
public void setLoadLast15Min(String loadLast15Min) {
this.loadLast15Min = loadLast15Min;
}
@XmlElement(name = "gcf-version")
public String getGcfVersion() {
return gcfVersion;
}
public void setGcfVersion(String gcfVersion) {
this.gcfVersion = gcfVersion;
}
@XmlElement(name = "ghn-version")
public String getGhnVersion() {
return ghnVersion;
}
public void setGhnVersion(String ghnVersion) {
this.ghnVersion = ghnVersion;
}
@XmlElement(name = "Scopes")
public String getScopes() {
return scopes;
}
public void setScopes(String scopes) {
this.scopes = scopes;
}
}

View File

@ -3,32 +3,45 @@ package org.gcube.portlets.admin.resourcemanagement.shared.resource;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.informationsystem.model.ER;
import org.gcube.informationsystem.model.entity.Facet;
import org.gcube.informationsystem.model.entity.Resource;
import org.gcube.informationsystem.model.entity.facet.AccessPointFacet;
import org.gcube.informationsystem.model.entity.facet.IdentifierFacet;
import org.gcube.informationsystem.model.entity.facet.MemoryFacet;
import org.gcube.informationsystem.model.entity.facet.NetworkingFacet;
import org.gcube.informationsystem.model.entity.facet.ServiceStateFacet;
import org.gcube.informationsystem.model.entity.facet.SimplePropertyFacet;
import org.gcube.informationsystem.model.entity.facet.SoftwareFacet;
import org.gcube.informationsystem.model.entity.facet.StateFacet;
import org.gcube.informationsystem.model.entity.resource.Configuration;
import org.gcube.informationsystem.model.entity.resource.EService;
import org.gcube.informationsystem.model.entity.resource.HostingNode;
import org.gcube.informationsystem.model.relation.ConsistsOf;
import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException;
import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClient;
import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClientFactory;
import org.gcube.informationsystem.model.relation.consistsof.HasPersistentMemory;
import org.gcube.informationsystem.model.relation.consistsof.HasVolatileMemory;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
import com.google.gwt.thirdparty.json.JSONArray;
import com.google.gwt.thirdparty.json.JSONObject;
/**
*
* @author pieve mail:alessandro.pieve@isti.cnr.it
*
*/
public class UtilityResource {
private static ResourceRegistryClient resourceRegistryClient = ResourceRegistryClientFactory.create();
//UTILITY per Calcolare i sotto alberi
public static ArrayList<String> getSubResourcesTree(String entity, String scope) throws Exception{
ArrayList<String> list = new ArrayList<>();
List<Resource> resources = (List<Resource>) resourceRegistryClient.getInstances(entity, true);
@ -38,7 +51,7 @@ public class UtilityResource {
for (Facet f : facets) {
switch (entity) {
/*
/*
case "Software":
if(f instanceof NetworkingFacet){
NetworkingFacet nf = (NetworkingFacet) f;
@ -70,14 +83,16 @@ public class UtilityResource {
list.add(nf.getHostName());
}
break;
*/
case "HostingNode":
if(f instanceof NetworkingFacet){
NetworkingFacet nf = (NetworkingFacet) f;
list.add(nf.getDomainName());
if (!list.contains(nf.getDomainName())){
list.add(nf.getDomainName());
}
}
break;
/*
case "Dataset":
if(f instanceof NetworkingFacet){
NetworkingFacet nf = (NetworkingFacet) f;
@ -99,17 +114,11 @@ public class UtilityResource {
*/
case "Configuration":
if(f instanceof SoftwareFacet){
System.out.println("------------Configuration--SoftwareFacet-- identified by GenericResource");
// System.out.println("------------Configuration--SoftwareFacet-- identified by GenericResource");
SoftwareFacet sf = (SoftwareFacet) f;
if (!list.contains(sf.getGroup())){
list.add(sf.getGroup());
System.out.println("------------sf.getGroup()"+sf.getGroup());
}
//creo mappa con tutta la struttura
//passo lo scope
UtilityResource.CreateCacheListConfiguration(scope);
}
break;
/*
@ -155,28 +164,170 @@ public class UtilityResource {
break;
*/
}
}
}
}
return list;
}
public static ArrayList<String> getSubResourcesTreeQuery(String entity, String scope) throws Exception{
ArrayList<String> list = new ArrayList<>();
String field = null;
String identifiedFacet = null;
switch (entity) {
case "HostingNode":
field="domainName";
identifiedFacet="NetworkingFacet";
break;
case "Configuration":
field="group";
identifiedFacet="SoftwareFacet";
break;
case "EService": //GcoreEndPoint
field="group";
identifiedFacet="SoftwareFacet";
break;
}
String query="SELECT DISTINCT("+field+") AS "+field+" "
+ "FROM (TRAVERSE outE('IsIdentifiedBy'),inV('"+identifiedFacet+"') FROM "+entity+")";
System.out.println("------------query----------->"+query);
String result=resourceRegistryClient.query(query, 1000, null);
JSONObject jsonObj = new JSONObject(result);
JSONArray jsonArray=jsonObj.getJSONArray("result");
for(int i=0;i < jsonArray.length();i++){
list.add(jsonArray.getJSONObject(i).getString(field));
}
return list;
}
/***
* Create a list for configuration (aka GenericResourceObject)
* @param scope
* @param typeE
* @return
* @throws Exception
*/
public static List<String> CreateListConfigurationQuery(String scope,
String typeC, String subTypeC) throws Exception {
ScopeProvider.instance.set(scope);
String query=null;
if (subTypeC==null){
query="SELECT header,name, description FROM (TRAVERSE outE('IsIdentifiedBy'),inV('SoftwareFacet') "
+ " FROM Configuration WHILE $depth<=0)";
}
else{
query="SELECT header,name, description FROM (TRAVERSE outE('IsIdentifiedBy'),inV('SoftwareFacet') "
+ " FROM Configuration ) where group='"+subTypeC+"'";
}
System.out.println("------------query list configuration----------->"+query);
JAXBContext context = JAXBContext.newInstance(GenericResourceObject.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_FRAGMENT, true);
List<String>resource=new ArrayList<String>();
String id="";
//String type="EService";
String type="GenericResource";
String subType="";
String name="";
String description="";
String result=resourceRegistryClient.query(query, 1000, null);
JSONObject jsonObj = new JSONObject(result);
JSONArray jsonArray=jsonObj.getJSONArray("result");
for(int i=0;i < jsonArray.length();i++){
//TODO
//id=jsonArray.getJSONObject(i).getString("header");
//id="b981efde-18ea-4867-98e7-5d024fcfc0cb"+i;
JSONObject header=new JSONObject(jsonArray.getJSONObject(i).getString("header"));
id=(String) header.get("uuid");
System.out.println("------------id----------->"+id);
try{
name=jsonArray.getJSONObject(i).getString("name");
}catch(Exception e){
name="";
}
try{
description=jsonArray.getJSONObject(i).getString("description");
}catch(Exception e){
description="";
}
GenericResourceObject temp =new GenericResourceObject(id, type, subType, name, description,scope);
StringWriter sw = new StringWriter();
m.marshal(temp,sw);
UUID uuid =UUID.fromString(id);
// ER configurationRegistry=resourceRegistryClient.getInstance(Configuration.class, uuid);
// CacheList.resourceid.put(id, new ResourceObject(name, configurationRegistry.toString()));
resource.add(sw.toString());
}
/*
List<Configuration> econfiguration = (List<Configuration>) resourceRegistryClient.getInstances(Configuration.NAME,false);
for (Configuration et : econfiguration) {
id=et.getHeader().getUUID().toString();
List<? extends Facet> facets = et.getIdentificationFacets();
for (Facet f : facets) {
if(f instanceof SoftwareFacet){
SoftwareFacet sf = (SoftwareFacet) f;
name=sf.getName();
subType=sf.getGroup();
description= sf.getDescription();
}
}
CacheList.resourceid.put(id, new ResourceObject(name, et.toString()));
GenericResourceObject temp =new GenericResourceObject(id, type, subType, name, description,scope);
StringWriter sw = new StringWriter();
m.marshal(temp,sw);
// filter to subtype
if (subTypeC!=null){
if (subType.equals(subTypeC)){
resource.add(sw.toString());
}
}
else
resource.add(sw.toString());
}
*/
return resource;
}
/***
* Create a list for eservice (aka gcore endpoint)
@ -320,65 +471,130 @@ public class UtilityResource {
}
//NOT WORK it's too slow
private static void CreateCacheListConfiguration(String scope) throws Exception {
// TODO Auto-generated method stub
/***
* Create a list for hosting node (aka GHN)
* @param scope
* @param typeE
* @return
* @throws Exception
* @throws Exception
*/
public static List<String> CreateListHostingNode(String scope, String typeC,String subTypeC) throws Exception {
ScopeProvider.instance.set(scope);
JAXBContext context = JAXBContext.newInstance(GenericResourceObject.class);
JAXBContext context = JAXBContext.newInstance(HostingNodeObject.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_FRAGMENT, true);
List<String>resource=new ArrayList<String>();
String id="";
//String type="EService";
String type="GenericResource";
String subType="";
String name="";
String description="";
List<Configuration> econfiguration = (List<Configuration>) resourceRegistryClient.getInstances(Configuration.NAME,false);
for (Configuration et : econfiguration) {
id=et.getHeader().getUUID().toString();
List<? extends Facet> facets = et.getIdentificationFacets();
//String type="HostingNode";
String type="GHN";
String subType="";//--
String status="";//---
String name="";//
String upTime="-";
String lastUpdate="-";
long localAvailableSpace = 0;
long virtualSize=0;
long virtualAvailable=0;
String loadLast1Min="-";
String loadLast5Min="-";
String loadLast15Min="-";
String gcfVersion="";
String ghnVersion="";
List<HostingNode> ehosting = (List<HostingNode>) resourceRegistryClient.getInstances(HostingNode.NAME,false);
for (HostingNode eh : ehosting) {
id=eh.getHeader().getUUID().toString();
lastUpdate=eh.getHeader().getLastUpdateTime().toString();
List<? extends Facet> facets = eh.getIdentificationFacets();
for (Facet f : facets) {
if(f instanceof SoftwareFacet){
SoftwareFacet sf = (SoftwareFacet) f;
name=sf.getName();
subType=sf.getGroup();
description= sf.getDescription();
if(f instanceof NetworkingFacet){
NetworkingFacet nf = (NetworkingFacet) f;
subType=nf.getDomainName();
name=nf.getHostName();
}
}
CacheList.resourceid.put(id, new ResourceObject(name, et.toString()));
GenericResourceObject temp =new GenericResourceObject(id, type, subType, name, description,scope);
CacheList.resourceid.put(id, new ResourceObject(name, eh.toString()));
List<ConsistsOf<? extends Resource, ? extends Facet>> consist = eh.getConsistsOf();
for (ConsistsOf<? extends Resource, ? extends Facet> c : consist) {
//System.out.println("------------ConsistsOf--ConsistsOf-- c"+c.toString());
if(c instanceof ConsistsOf){
if (c.getTarget() instanceof SimplePropertyFacet){
SimplePropertyFacet sp = (SimplePropertyFacet) c.getTarget();
try {
gcfVersion=sp.getAdditionalProperty("SmartGearsDistribution").toString();
ghnVersion=sp.getAdditionalProperty("SmartGears").toString();
}
catch(Exception e){
gcfVersion="";
ghnVersion="";
}
}
//get disk space
if (c instanceof HasPersistentMemory){
HasPersistentMemory hpm = (HasPersistentMemory) c;
try {
MemoryFacet mfh = (MemoryFacet) hpm.getTarget();
localAvailableSpace=mfh.getSize()- mfh.getUsed();
}
catch(Exception e){
localAvailableSpace=0;
}
}
//get ram space
if (c instanceof HasVolatileMemory){
HasVolatileMemory hvm = (HasVolatileMemory) c;
try {
if (hvm.getAdditionalProperty("memoryType").equals("RAM")){
MemoryFacet mf = (MemoryFacet) hvm.getTarget();
virtualAvailable=mf.getSize()-mf.getUsed();
virtualSize=mf.getSize();
}
}
catch(Exception e){
virtualAvailable=0;
virtualSize=0;
}
}
//get status
if (c.getTarget() instanceof StateFacet){
StateFacet st = (StateFacet) c.getTarget();
try {
status=st.getValue();
}
catch(Exception e){
status="";
}
}
}
}
HostingNodeObject temp =new HostingNodeObject( id, type, subType,
status, name, upTime, lastUpdate,
localAvailableSpace, virtualSize,
virtualAvailable, loadLast1Min, loadLast5Min,
loadLast15Min, gcfVersion, ghnVersion,
scope);
StringWriter sw = new StringWriter();
m.marshal(temp,sw);
System.out.println("---------------->sw.toString "+sw.toString());
if (CacheList.resourceTable.containsKey(type+subType)){
List<String> listResource=CacheList.resourceTable.get(type+subType);
if (!listResource.contains(sw.toString()))
listResource.add(sw.toString());
// filter to subtype
if (subTypeC!=null){
if (subType.equals(subTypeC)){
resource.add(sw.toString());
}
}
else{
List<String>listResource=new ArrayList<String>();
listResource.add(sw.toString());
CacheList.resourceTable.put(type+subType, listResource);
}
}
else
resource.add(sw.toString());
}
return resource;
}
}