package com.telefonica.claudia.smi.monitoring.resources;
import java.io.StringWriter;
import java.util.ArrayList;
import org.apache.commons.betwixt.io.BeanWriter;
import org.restlet.Context;
import org.restlet.data.MediaType;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.resource.Representation;
import org.restlet.resource.Resource;
import org.restlet.resource.ResourceException;
import org.restlet.resource.StringRepresentation;
import org.restlet.resource.Variant;
import com.telefonica.claudia.smi.monitoring.MonitorException;
import com.telefonica.claudia.smi.monitoring.MonitoringApplication;
import com.telefonica.claudia.smi.monitoring.MonitoringDriver;
import com.telefonica.claudia.smi.monitoring.bean.MeasureDescriptor;
import com.telefonica.claudia.smi.monitoring.bean.MeasureDescriptorList;
import com.telefonica.claudia.smi.monitoring.bean.MeasuredValueList;
//Test with http://localhost:8182/api/org/xxx/vdc/es.tid.customers.testCustomer.services.NOMBRE_SERVICIO/monitor
public class TestResource extends Resource {
private String orgId = "es_tid";
private String vdcId = "dani";
private String vappId = "servi";
private String vappId2 = "VEEMaster";
private String vappId3 = "1";
private String hwitemId = "cpus.1";
public static final String TYPE_VDC = "application/vnd.telefonica.tcloud.vdc+xml";
public TestResource(Context context, Request request, Response response) {
super(context, request, response);
/*
orgId = (String) request.getAttributes().get("org-id");
vdcId = (String) request.getAttributes().get("vdc-id");
vappId = (String) request.getAttributes().get("vapp-id");
vappId2 = (String) request.getAttributes().get("vee-id");
vappId3 = (String) request.getAttributes().get("vm-id");
hwitemId = (String) request.getAttributes().get("hwitem-id");
*/
System.out.println("org:" + orgId + " -- vdc: " + vdcId + " -- vapp: " + vappId);
System.out.println("vee:" + vappId2 + " -- vm: " + vappId3 + " -- hwItem: " + hwitemId);
System.out.println("TestResource() created");
getVariants().add(new Variant(MediaType.TEXT_XML));
}
public Representation represent(Variant variant) throws ResourceException {
System.out.println("TestResource.represent");//log
MonitoringDriver driver = (MonitoringDriver) getContext().getAttributes().get(MonitoringApplication.ATTR_PLUGIN_MONITORING);
MeasureDescriptorList mdl = null;
try {
hwitemId = "cpus.1";
System.out.println("### VDC example ###");
orgId = "es_tid";
vdcId = "dani";
mdl = driver.getVdcMeasureDescriptorList(orgId, vdcId);
System.out.println(toString(mdl));
System.out.println("### VApps examples ###");
ArrayList<String> al = new ArrayList<String>();
System.out.println("### Service ###");
vappId = "servi";
al.add(vappId);
mdl = driver.getVappMeasureDescriptorList(orgId, vdcId, al);
System.out.println(toString(mdl));
String measureId = "kpis.queueLength";
MeasureDescriptor mdes = driver.getVappMeasureDescriptor(orgId, vdcId, al, measureId);
System.out.println(toString(mdes));
// MeasuredValueList mvl = driver.getMeasuredValueList(mdes, 10);
// System.out.println(toString(mvl));
System.out.println("### VEE ###");
vappId2 = "VEEMaster";
al.add(vappId2);
mdl = driver.getVappMeasureDescriptorList(orgId, vdcId, al);
System.out.println(toString(mdl));
System.out.println("### Replica ###");
vappId3 = "1";
al.add(vappId3);
mdl = driver.getVappMeasureDescriptorList(orgId, vdcId, al);
System.out.println(toString(mdl));
measureId = "cpus.1";
mdes = driver.getVappMeasureDescriptor(orgId, vdcId, al, measureId);
System.out.println(toString(mdes));
//mvl= driver.getMeasuredValueList(mdes, 10);
//System.out.println(toString(mvl));
System.out.println("### HwItem examples ###");
mdl = driver.getHwItemMeasureDescriptorList(orgId, vdcId, al, hwitemId);
System.out.println(toString(mdl));
System.out.println("### Network ###");
orgId = "es_tid";
vdcId = "Dani";
String networkId = "services.Service5.networks.sge_net";
mdl = driver.getNetMeasureDescriptorList(orgId, vdcId, networkId);
System.out.println(toString(mdl));
} catch (MonitorException e) {
System.out.println(e.getMessage());
//return getUnknownElementErrorRepresentation(e.getMessage());
}
//setMeasureDescriptorListHrefsLinks(mdl, "application/vnd.telefonica.tcloud.vapp+xml");
//return new StringRepresentation(toString(mdl), MediaType.TEXT_XML);
return new StringRepresentation("Here!", MediaType.TEXT_XML);
}
private static String toString(Object obj) {
StringWriter stringWriter = new StringWriter();
stringWriter.write("<?xml version='1.0' encoding='iso-8859-1' ?>\n");
// Create a BeanWriter which writes to our prepared stream
BeanWriter beanWriter = new BeanWriter(stringWriter);
// Configure betwixt
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
beanWriter.getBindingConfiguration().setMapIDs(false);
beanWriter.enablePrettyPrint();
// Date conversion
//beanWriter.getBindingConfiguration().setObjectStringConverter(new DateStringConverter());
// Write and return the object
String ret = null;
try {
beanWriter.write(obj);
ret = stringWriter.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
beanWriter.close();
stringWriter.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return ret;
}
}