Skip to content
Snippets Groups Projects
Commit 358cf8cd authored by erbel's avatar erbel
Browse files

Simulation of CPU values in Dummy Connector

parent b3bc42ec
No related branches found
No related tags found
1 merge request!2Dev/mon prop resource
......@@ -9,5 +9,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Require-Bundle: org.slf4j.api,
org.eclipse.cmf.occi.core,
de.ugoe.cs.rwm.mocci.model
de.ugoe.cs.rwm.mocci.model,
org.modmacao.core
Export-Package: de.ugoe.cs.rwm.mocci.connector
package de.ugoe.cs.rwm.mocci.connector;
import java.util.Random;
import org.eclipse.cmf.occi.core.AttributeState;
import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl;
import monitoring.Monitorableproperty;
public class CPUSimulation implements Runnable{
private Monitorableproperty monProp;
private OCCIFactoryImpl factory = new OCCIFactoryImpl();
private static Random random;
public CPUSimulation(Monitorableproperty monProp) {
this.monProp = monProp;
}
@Override
public void run() {
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(monProp.getId());
AttributeState monPropAttr = factory.createAttributeState();
monPropAttr.setName("monitoring.result");
String value = CpuValue.getRandomValue().toString();
monPropAttr.setValue(value);
System.out.println("MonProp: " + monProp.getTitle() + ", set to: " + value);
monProp.getAttributes().add(monPropAttr);
}
}
}
package de.ugoe.cs.rwm.mocci.connector;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.cmf.occi.core.Link;
import org.eclipse.cmf.occi.core.MixinBase;
import org.modmacao.cm.ConfigurationManagementTool;
import org.modmacao.cm.ansible.AnsibleCMTool;
import org.modmacao.occi.platform.Component;
import org.modmacao.occi.platform.Status;
public class ComponentManager {
private Component comp;
public ComponentManager(Component comp) {
this.comp = comp;
}
public void undeploy() {
switch(comp.getOcciComponentState().getValue()) {
case Status.ACTIVE_VALUE:
comp.stop();
comp.setOcciComponentState(Status.UNDEPLOYED);
break;
case Status.INACTIVE_VALUE:
comp.setOcciComponentState(Status.UNDEPLOYED);
break;
case Status.DEPLOYED_VALUE:
comp.setOcciComponentState(Status.UNDEPLOYED);
break;
case Status.ERROR_VALUE:
comp.setOcciComponentState(Status.UNDEPLOYED);
break;
default:
break;
}
}
// End of user code
// Start of user code Publisher_Kind_deploy_action
/**
* Implement OCCI action:
* - scheme: http://schemas.modmacao.org/occi/platform/component/action#
* - term: deploy
* - title:
*/
public void deploy()
{
int status = -1;
// Component State Machine.
switch(comp.getOcciComponentState().getValue()) {
case Status.UNDEPLOYED_VALUE:
comp.setOcciComponentState(Status.DEPLOYED);
break;
default:
break;
}
}
// End of user code
// Start of user code Publisher_Kind_configure_action
/**
* Implement OCCI action:
* - scheme: http://schemas.modmacao.org/occi/platform/component/action#
* - term: configure
* - title:
*/
public void configure()
{
int status = -1;
// Component State Machine.
switch(comp.getOcciComponentState().getValue()) {
case Status.DEPLOYED_VALUE:
comp.setOcciComponentState(Status.INACTIVE);
break;
default:
break;
}
}
// End of user code
// Start of user code Publisher_Kind_Start_action
/**
* Implement OCCI action:
* - scheme: http://schemas.modmacao.org/occi/platform/component/action#
* - term: start
* - title: Start the application.
*/
public void start()
{
int status = -1;
// Component State Machine.
switch(comp.getOcciComponentState().getValue()) {
case Status.INACTIVE_VALUE:
comp.setOcciComponentState(Status.ACTIVE);
break;
case Status.UNDEPLOYED_VALUE:
comp.setOcciComponentState(Status.ERROR);
break;
default:
break;
}
}
// End of user code
// Start of user code Publisher_Kind_Stop_action
/**
* Implement OCCI action:
* - scheme: http://schemas.modmacao.org/occi/platform/component/action#
* - term: stop
* - title: Stop the application.
*/
public void stop()
{
int status = -1;
// Component State Machine.
switch(comp.getOcciComponentState().getValue()) {
case Status.ACTIVE_VALUE:
comp.setOcciComponentState(Status.INACTIVE);
break;
default:
break;
}
}
// End of user code
private boolean assertCompsStatusEquals(List<Component> components, Status status) {
for (Component component: components) {
if (component.getOcciComponentState().getValue() != status.getValue()) {
return false;
}
}
return true;
}
}
\ No newline at end of file
package de.ugoe.cs.rwm.mocci.connector;
import java.util.Random;
public enum CpuValue {
Critical, High, Medium, Low, None;
public static CpuValue getRandomValue() {
Random random = new Random();
return values()[random.nextInt(values().length)];
}
}
\ No newline at end of file
......@@ -23,6 +23,8 @@ import org.eclipse.cmf.occi.core.Link;
import org.eclipse.cmf.occi.core.MixinBase;
import org.eclipse.cmf.occi.core.Resource;
import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl;
import org.modmacao.occi.platform.Component;
import org.modmacao.occi.platform.Status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -44,10 +46,7 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
* Initialize the logger.
*/
private static Logger LOGGER = LoggerFactory.getLogger(ResultproviderConnector.class);
private OCCIFactoryImpl factory = new OCCIFactoryImpl();
private Sensor sensor;
private Monitorableproperty monProp;
private Resource monObject;
private Thread simulation;
//private Occiresultprovider occiResProv;
......@@ -58,14 +57,16 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
ResultproviderConnector()
{
LOGGER.debug("Constructor called on " + this);
//occiResProv = getMartMixin();
// TODO: Implement this constructor.
}
// End of user code
//
// OCCI CRUD callback operations.
//
// Start of user code PublisherocciCreate
/**
* Called when this Publisher instance is completely created.
......@@ -74,6 +75,7 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void occiCreate()
{
LOGGER.debug("occiCreate() called on " + this);
// TODO: Implement this callback or remove this method.
}
// End of user code
......@@ -86,6 +88,13 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void occiRetrieve()
{
LOGGER.debug("occiRetrieve() called on " + this);
if(this.getOcciComponentState().getValue() == Status.ACTIVE.getValue()) {
if(simulation == null) {
CPUSimulation sim = new CPUSimulation(getMonProp(getSensor()));
simulation = new Thread(sim);
simulation.start();
}
}
// TODO: Implement this callback or remove this method.
}
// End of user code
......@@ -129,7 +138,15 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void configure()
{
LOGGER.debug("Action configure() called on " + this);
setRuntimeInformation();
switch(this.getOcciComponentState().getValue()) {
case Status.DEPLOYED_VALUE:
this.setOcciComponentState(Status.INACTIVE);
break;
default:
break;
}
// TODO: Implement how to configure this publisher.
}
// End of user code
......@@ -144,10 +161,16 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void deploy()
{
LOGGER.debug("Action deploy() called on " + this);
setRuntimeInformation();
switch(this.getOcciComponentState().getValue()) {
// TODO: Implement how to deploy this publisher.
case Status.UNDEPLOYED_VALUE:
this.setOcciComponentState(Status.DEPLOYED);
break;
default:
break;
}
}
// End of user code
......@@ -162,8 +185,33 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void undeploy()
{
LOGGER.debug("Action undeploy() called on " + this);
setRuntimeInformation();
// TODO: Implement how to undeploy this publisher.
switch(this.getOcciComponentState().getValue()) {
case Status.ACTIVE_VALUE:
this.setOcciComponentState(Status.UNDEPLOYED);
if(simulation!= null) {
simulation.stop();
}
break;
case Status.INACTIVE_VALUE:
this.setOcciComponentState(Status.UNDEPLOYED);
break;
case Status.DEPLOYED_VALUE:
this.setOcciComponentState(Status.UNDEPLOYED);
break;
case Status.ERROR_VALUE:
this.setOcciComponentState(Status.UNDEPLOYED);
break;
default:
break;
}
}
// End of user code
// Start of user code Publisher_Kind_Stop_action
......@@ -177,8 +225,10 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void stop()
{
LOGGER.debug("Action stop() called on " + this);
setRuntimeInformation();
// TODO: Implement how to stop this publisher.
if(simulation!= null) {
simulation.stop();
}
setOcciComponentState(Status.INACTIVE);
}
// End of user code
// Start of user code Publisher_Kind_Start_action
......@@ -192,48 +242,35 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
public void start()
{
LOGGER.debug("Action start() called on " + this);
setRuntimeInformation();
}
private void setRuntimeInformation() {
sensor = getSensor();
AttributeState sensorAttr = factory.createAttributeState();
sensorAttr.setName("sensor");
sensorAttr.setValue(sensor.getLocation());
System.out.println("Sensor: " + sensor);
this.attributes.add(sensorAttr);
monProp = getMonProp(sensor);
AttributeState monPropAttr = factory.createAttributeState();
monPropAttr.setName("monitorable.property");
monPropAttr.setValue(monProp.getLocation());
System.out.println("MonProp: " + monProp);
this.attributes.add(monPropAttr);
AttributeState monPropNameAttr = factory.createAttributeState();
monPropNameAttr.setName("monitorable.property.property");
monPropNameAttr.setValue(monProp.getMonitoringProperty());
this.attributes.add(monPropNameAttr);
monObject = monProp.getTarget();
AttributeState monObjectAttr = factory.createAttributeState();
monObjectAttr.setName("monitorable.property.target");
monObjectAttr.setValue(monObject.getLocation());
switch(this.getOcciComponentState().getValue()) {
case Status.INACTIVE_VALUE:
this.setOcciComponentState(Status.ACTIVE);
if(simulation == null) {
CPUSimulation sim = new CPUSimulation(getMonProp(getSensor()));
simulation = new Thread(sim);
simulation.start();
}
break;
case Status.UNDEPLOYED_VALUE:
this.setOcciComponentState(Status.ACTIVE);
if(simulation == null) {
CPUSimulation sim = new CPUSimulation(getMonProp(getSensor()));
simulation = new Thread(sim);
simulation.start();
}
break;
default:
break;
}
}
// End of user code
private Occiresultprovider getMartMixin() {
for(MixinBase mixinBase: this.getParts()) {
if(mixinBase instanceof Occiresultprovider) {
LOGGER.info("Occiresultprovider found: " + this.title);
return ((Occiresultprovider)mixinBase);
}
}
return null;
}
private Sensor getSensor() {
for(Link link: this.getRlinks()) {
......@@ -252,4 +289,5 @@ public class ResultproviderConnector extends monitoring.impl.ResultproviderImpl
}
throw new NoSuchElementException("No monitorableproperty found in sensor!");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment