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

Added ShadowJar Creation

parent 1b788a3b
No related branches found
No related tags found
1 merge request!3Dev/mon prop resource
Pipeline #87794 passed
Showing
with 600 additions and 330 deletions
# Project Title
# MOCCI
[![build status](https://gitlab.gwdg.de/rwm/de.ugoe.cs.rwm.mocci/badges/master/pipeline.svg)](https://gitlab.gwdg.de/rwm/de.ugoe.cs.rwm.mocci/commits/master)
Mocci is a toolchain using the Open Cloud Computing Interface (OCCI) to enable a model-driven cloud orchestration of cloud deployments and its monitoring instruments.
Moreover, a runtime model manager is provided that grants access to gathered monitoring data.
Mocci is an extension for the Open Cloud Computing Interface (OCCI) to enable a model-driven management of monitoring instruments in the cloud, as well as storing their results within an OCCI runtime model.
Together with other tools from the OCCI ecosystem it provides a testing and execution environment for self-adaptive systems.
The following instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
......
......@@ -6,6 +6,7 @@ apply plugin: 'findbugs'
apply plugin: 'maven'
apply plugin: "com.github.psxpaul.execfork"
apply plugin: 'jacoco'
apply plugin: 'com.github.johnrengelman.shadow'
subprojects {
......@@ -29,6 +30,7 @@ buildscript {
}
dependencies {
classpath "gradle.plugin.com.github.psxpaul:gradle-execfork-plugin:0.1.8"
classpath "com.github.jengelman.gradle.plugins:shadow:4.0.3"
}
}
......@@ -117,6 +119,13 @@ project(':de.ugoe.cs.rwm.mocci.connector.dummy') {
}
jar {
manifest {
attributes 'Main-Class': 'de.ugoe.cs.rwm.mocci.MAPE'
}
}
tasks.shadowJar.dependsOn("build")
configurations.all {
// Check for updates every build
......
......@@ -9,7 +9,7 @@ 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 {
......
......@@ -13,7 +13,7 @@
package monitoring;
import org.modmacao.occi.platform.Component;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Datagatherer</b></em>'.
......
......@@ -18,6 +18,5 @@ include 'services:webservice'
rootProject.name = 'de.ugoe.cs.rwm.mocci'
include 'de.ugoe.cs.rwm.mocci.model'
include 'de.ugoe.cs.rwm.mocci.model.edit'
include 'de.ugoe.cs.rwm.mocci.examples'
include 'de.ugoe.cs.rwm.mocci.connector'
include 'de.ugoe.cs.rwm.mocci.connector.dummy'
\ No newline at end of file
include 'de.ugoe.cs.rwm.mocci.connector.dummy'
package de.ugoe.cs.rwm.mocci;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.nio.file.Path;
import org.eclipse.emf.ecore.resource.Resource;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.executor.MartExecutor;
import de.ugoe.cs.rwm.tocci.Transformator;
import de.ugoe.cs.rwm.tocci.TransformatorFactory;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
public class InitialDeployment {
private static String manNWid = "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339590";
private static String manNWRuntimeId = "75a4639e-9ce7-4058-b859-8a711b0e2e7b";
private static String sshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova";
private static String userData = "I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj";
private Connector conn;
public InitialDeployment(Connector conn) {
this.conn = conn;
}
public void deploy() {
System.out.println("Initial Deployment");
Path occiPath = getModelPath("de/ugoe/cs/rwm/mocci/occi/hadoopClusterNewExtWithMem.occic");
Resource model = ModelUtility.loadOCCIintoEMFResource(occiPath);
System.out.println(model.getResourceSet().getResources());
Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI");
trans.transform(model, occiPath);
model = ModelUtility.loadOCCIintoEMFResource(occiPath);
OCCI2OPENSTACKTransformator trans2 = OCCI2OPENSTACKTransformator.getInstance();
trans2.setTransformationProperties(manNWRuntimeId, sshKey, userData, manNWid);
trans2.transform(model, occiPath);
model = ModelUtility.loadOCCIintoEMFResource(occiPath);
MartDeployer deployer = new MartDeployer(conn);
deployer.deploy(model);
MartExecutor executor = new MartExecutor(conn);
executor.executeGetOperation("/resultprovider");
}
public static Path getModelPath(String resourceName) {
File file = null;
URL res = ClassLoader.getSystemClassLoader().getResource(resourceName);
if (res.toString().startsWith("jar:")) {
try (InputStream input = ClassLoader.getSystemClassLoader().getResourceAsStream(resourceName)) {
file = File.createTempFile("tempfile", ".occic");
@SuppressWarnings("resource")
OutputStream out = new FileOutputStream(file);
int read;
int byteArrSize = 1024;
byte[] bytes = new byte[byteArrSize];
while ((read = input.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
file.deleteOnExit();
} catch (IOException ex) {
ex.printStackTrace();
}
} else {
// this will probably work in your IDE, but not from a JAR
file = new File(res.getFile());
}
if (file != null && !file.exists()) {
throw new RuntimeException("Error: File " + file + " not found!");
}
return file.toPath();
}
}
......@@ -2,59 +2,25 @@ package de.ugoe.cs.rwm.mocci;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.cmf.occi.core.AttributeState;
import org.eclipse.cmf.occi.core.Configuration;
import org.eclipse.cmf.occi.core.Link;
import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl;
import org.eclipse.cmf.occi.infrastructure.Compute;
import org.eclipse.cmf.occi.infrastructure.ComputeStatus;
import org.eclipse.cmf.occi.infrastructure.Networkinterface;
import org.eclipse.cmf.occi.infrastructure.impl.InfrastructureFactoryImpl;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.epsilon.emc.emf.CachedResourceSet;
import org.json.JSONArray;
import org.modmacao.occi.platform.Component;
import org.modmacao.occi.platform.Componentlink;
import org.modmacao.occi.platform.PlatformPackage;
import org.modmacao.occi.platform.Status;
import org.modmacao.occi.platform.impl.PlatformFactoryImpl;
import org.modmacao.placement.Placementlink;
import org.modmacao.placement.impl.PlacementFactoryImpl;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
import de.ugoe.cs.rwm.docci.executor.Executor;
import de.ugoe.cs.rwm.tocci.Transformator;
import de.ugoe.cs.rwm.tocci.TransformatorFactory;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
import monitoring.Datagatherer;
import monitoring.Dataprocessor;
import monitoring.Monitorableproperty;
import monitoring.Resultprovider;
import monitoring.Sensor;
import monitoring.impl.MonitoringFactoryImpl;
import de.ugoe.cs.rwm.docci.executor.MartExecutor;
/**Making javadoc happy.
* @author erbel
*
*/
public class MAPE {
static String manNWid = "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339590";
static String manNWRuntimeId = "75a4639e-9ce7-4058-b859-8a711b0e2e7b";
static String sshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova";
static String userData = "I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj";
protected static final Path RUNTIMEPATH = Paths.get(System.getProperty("user.home") + "/.rwm/runtime.occic");
static Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
static MartDeployer deployer = new MartDeployer(conn);
static MartQuery executor = new MartQuery(conn);
static MartExecutor executor = new MartExecutor(conn);
static Resource runtimeModel;
static int interval;
static int interval = 10000;
/**Making javadoc happy.
* @param args Making javadoc happy.
......@@ -62,12 +28,11 @@ public class MAPE {
public static void main(String[] args) {
System.out.println("Starting MAPE loop");
RegistryAndLoggerSetup.setup();
interval=10000;
initialDeploy(conn);
initialDeploy();
while(true) {
try {
System.out.println("\n--------------------Waiting for new Cycle: Sleeping " + interval +"--------------------");
System.out.println("\n--------------------Waiting for new MAPE-K Cycle: Sleeping " + interval +"--------------------");
Thread.sleep(interval);
Monitor monitor = monitor();
......@@ -81,7 +46,12 @@ public class MAPE {
}
}
private static Monitor monitor() {
private static void initialDeploy(Connector conn) {
InitialDeployment depl = new InitialDeployment(conn);
depl.deploy();
}
public static Monitor monitor() {
int critCPUs = getNumberOfCriticalCPUs();
int noneCPUs = getNumberOfNoneCPUs();
int allCPUs = getNumberOfAllCPUs();
......@@ -91,7 +61,7 @@ private static Monitor monitor() {
}
private static String analyze(Monitor monitor) {
public static String analyze(Monitor monitor) {
int noneCPUs = monitor.getNoneCPUs();
int critCPUs = monitor.getCritCPUs();
int allCPUs = monitor.getAllCPUs();
......@@ -105,7 +75,7 @@ private static String analyze(Monitor monitor) {
}
}
private static Resource plan(String analysis) {
public static Resource plan(String analysis) {
switch (analysis) {
case "upScale": System.out.println("Plan: upScale!");
UpScaler upscaler = new UpScaler(conn, RUNTIMEPATH);
......@@ -118,28 +88,13 @@ private static Resource plan(String analysis) {
}
private static void execute(Resource runtimeModel) {
public static void execute(Resource runtimeModel) {
System.out.println("Execute: Deploying adjusted Model");
deployer.deploy(runtimeModel);
}
public static void initialDeploy() {
System.out.println("Initial Deployment");
Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopClusterNewExtWithMem.occic"));
Resource model = ModelUtility.loadOCCIintoEMFResource(occiPath);
Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI");
trans.transform(model, occiPath);
OCCI2OPENSTACKTransformator trans2 = OCCI2OPENSTACKTransformator.getInstance();
trans2.setTransformationProperties(manNWRuntimeId, sshKey, userData, manNWid);
trans2.transform(occiPath, occiPath);
deployer.deploy(occiPath);
executor.executeGetOperation("/resultprovider");
}
private static int getNumberOfNoneCPUs() {
String query = "/monitorableproperty?attribute=monitoring.result&value=None";
......
package de.ugoe.cs.rwm.mocci;
import java.net.HttpURLConnection;
import org.eclipse.cmf.occi.core.Action;
import org.eclipse.cmf.occi.core.AttributeState;
import org.eclipse.cmf.occi.core.Entity;
import org.eclipse.cmf.occi.core.Link;
import org.eclipse.cmf.occi.core.Mixin;
import org.eclipse.cmf.occi.core.MixinBase;
import org.eclipse.emf.ecore.EObject;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.executor.AbsExecutor;
import de.ugoe.cs.rwm.docci.executor.MartExecutor;
/**
* Handles execution of OCCI Model Elements.
*
* @author erbel
*
*/
public class MartQuery extends MartExecutor {
/**
* Creates an Executor to the OCCI API of the specified connection. Sets
* maxTries to 3.
*
* @param conn
*/
public MartQuery(Connector conn) {
super(conn);
}
/**
* Creates Executor to the OCCI API of the specified connection. maxTries is
* hereby the maximum amount of retries for a request. Should be at least 2 to
* handle connection issues.
*
* @param conn
* @param maxTries
*/
public MartQuery(Connector conn, int maxTries) {
super(conn, maxTries);
}
public String executeGetOperation(String query) {
String adaptedAddress = "http://" + connector.getAddress() + ":" + connector.getPort() + query;
HttpURLConnection conn = establishConnection(adaptedAddress, null, false, null);
conn.setRequestProperty("Accept", "application/json");
//System.out.println("GET" + " " + adaptedAddress);
return getOutput(conn);
}
}
package de.ugoe.cs.rwm.mocci;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.cmf.occi.core.OCCIPackage;
import org.eclipse.cmf.occi.core.util.OCCIResourceFactoryImpl;
import org.eclipse.cmf.occi.core.util.OcciRegistry;
import org.eclipse.cmf.occi.infrastructure.InfrastructurePackage;
import org.eclipse.emf.ecore.resource.Resource.Factory.Registry;
import org.modmacao.ansibleconfiguration.AnsibleconfigurationPackage;
import org.modmacao.occi.platform.PlatformPackage;
import org.modmacao.placement.PlacementPackage;
import de.ugoe.cs.rwm.cocci.Comparator;
import de.ugoe.cs.rwm.docci.Deployer;
import de.ugoe.cs.rwm.docci.appdeployer.MartAppDeployerSlave;
......@@ -40,7 +42,7 @@ public class RegistryAndLoggerSetup {
Logger.getLogger(Provisioner.class.getName()).setLevel(Level.OFF);
Logger.getLogger(Deployer.class.getName()).setLevel(Level.OFF);
Logger.getLogger(Deprovisioner.class.getName()).setLevel(Level.OFF);
Logger.getLogger(Executor.class.getName()).setLevel(Level.OFF);
Logger.getLogger(Executor.class.getName()).setLevel(Level.INFO);
Logger.getLogger(MartAppDeployerSlave.class.getName()).setLevel(Level.OFF);
}
......@@ -50,6 +52,7 @@ public class RegistryAndLoggerSetup {
OCCIPackage.eINSTANCE.eClass();
ModmacaoPackage.eINSTANCE.eClass();
OpenstackruntimePackage.eINSTANCE.eClass();
PlacementPackage.eINSTANCE.eClass();
WorkflowPackage.eINSTANCE.eClass();
OssweruntimePackage.eINSTANCE.eClass();
......@@ -80,5 +83,8 @@ public class RegistryAndLoggerSetup {
OCCIPackage.class.getClassLoader().getResource("model/ansibleconfiguration.occie").toString());
OcciRegistry.getInstance().registerExtension("http://schemas.ugoe.cs.rwm/monitoring#",
MonitoringPackage.class.getClassLoader().getResource("model/monitoring.occie").toString());
Registry.INSTANCE.getExtensionToFactoryMap().put("*", new OCCIResourceFactoryImpl());
}
}
......@@ -45,7 +45,7 @@ public class UpScaler extends AbsScaler {
}
private Compute addCompute(Configuration config) {
System.out.println("Adding Compute Node to Model");
System.out.println(" Adding Compute Node to Model");
Compute comp = iFactory.createCompute();
comp.setTitle("hadoop-worker-additional");
comp.setOcciComputeState(ComputeStatus.ACTIVE);
......@@ -67,7 +67,7 @@ public class UpScaler extends AbsScaler {
}
private Component addWorkerComponent(Configuration config, Compute comp) {
System.out.println("Adding Worker Component to Model");
System.out.println(" Adding Worker Component to Model");
Component worker = pFactory.createComponent();
worker.setTitle("worker-component");
worker.setOcciComponentState(Status.ACTIVE);
......@@ -89,7 +89,7 @@ public class UpScaler extends AbsScaler {
}
private Sensor addSensor(Configuration config, Compute comp) {
System.out.println("Adding Sensor to Model");
System.out.println(" Adding Sensor to Model");
Sensor sens = mFactory.createSensor();
sens.setTitle("CPUSensor");
config.getResources().add(sens);
......@@ -115,7 +115,7 @@ public class UpScaler extends AbsScaler {
}
private Datagatherer addDataGatherer(Configuration config, Compute comp, Sensor sens) {
System.out.println(" Adding Datagatherer to Model");
System.out.println(" Adding Datagatherer to Model");
Datagatherer dg = mFactory.createDatagatherer();
dg.setTitle("CPUGatherer");
config.getResources().add(dg);
......@@ -139,7 +139,7 @@ public class UpScaler extends AbsScaler {
}
private Dataprocessor addDataProcessor(Configuration config, Compute comp, Sensor sens, Datagatherer dg) {
System.out.println(" Adding Dataprocessor to Model");
System.out.println(" Adding Dataprocessor to Model");
Dataprocessor dp = mFactory.createDataprocessor();
dp.setTitle("CPUProcessor");
config.getResources().add(dp);
......@@ -162,7 +162,7 @@ public class UpScaler extends AbsScaler {
}
private Resultprovider addResultProvider(Configuration config, Compute comp, Sensor sens, Dataprocessor dp) {
System.out.println(" Adding Resultprovider to Model");
System.out.println(" Adding Resultprovider to Model");
Resultprovider rp = mFactory.createResultprovider();
rp.setTitle("CPUProvider");
config.getResources().add(rp);
......
......@@ -28,6 +28,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.modmacao.occi.platform.Componentlink;
import org.modmacao.occi.platform.PlatformFactory;
import org.modmacao.occi.platform.impl.PlatformFactoryImpl;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
......@@ -37,12 +40,16 @@ import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
import de.ugoe.cs.rwm.tocci.Transformator;
import de.ugoe.cs.rwm.tocci.TransformatorFactory;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
import monitoring.Datagatherer;
import monitoring.Dataprocessor;
import monitoring.Monitorableproperty;
import monitoring.MonitoringFactory;
import monitoring.MonitoringPackage;
import monitoring.Resultprovider;
import monitoring.Sensor;
import monitoring.impl.MonitoringFactoryImpl;
public class CreateElementsTest {
public class CreateMonitoringElementsTest {
@BeforeClass
public static void OCCIRegistrySetup() {
......@@ -51,18 +58,70 @@ public class CreateElementsTest {
}
@Test
public void createModel() {
public void createMonitoringElements() {
//Factories to create OCCI elements
OCCIFactory cFact = new OCCIFactoryImpl();
InfrastructureFactory iFact = new InfrastructureFactoryImpl();
MonitoringFactory mFact = new MonitoringFactoryImpl();
PlatformFactory pFact = new PlatformFactoryImpl();
//Top level element
Configuration config = cFact.createConfiguration();
Compute comp = iFact.createCompute();
//Resources
Sensor sensor = mFact.createSensor();
Compute comp = iFact.createCompute();
config.getResources().add(sensor);
config.getResources().add(comp);
Monitorableproperty mp = mFact.createMonitorableproperty();
mp.setSource(sensor);
mp.setTarget(comp);
Datagatherer dg = mFact.createDatagatherer();
Componentlink cl = pFact.createComponentlink();
cl.setSource(sensor);
cl.setTarget(dg);
Dataprocessor dp = mFact.createDataprocessor();
Componentlink cl1 = pFact.createComponentlink();
cl1.setSource(sensor);
cl1.setTarget(dp);
Resultprovider rp = mFact.createResultprovider();
Componentlink cl2 = pFact.createComponentlink();
cl2.setSource(sensor);
cl2.setTarget(rp);
System.out.println("Checking configuration: " + config.getResources());
assertTrue(checkSensor(config));
}
public boolean checkSensor(Configuration conf) {
for(org.eclipse.cmf.occi.core.Resource res: conf.getResources()) {
if(res instanceof Sensor) {
Sensor sens = (Sensor) res;
if(containsDevices(sens)) {
return true;
}
}
}
return false;
}
private boolean containsDevices(Sensor sens) {
int count = 0;
for(Link link: sens.getLinks()) {
if(link instanceof Componentlink) {
count++;
}
}
if(count == 3) {
return true;
}
return false;
}
}
\ No newline at end of file
......@@ -45,7 +45,7 @@ public class DeployHadoopMonitoringTest {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
}
@Ignore
@Before
public void deprovisionEverything() {
CachedResourceSet.getCache().clear();
......@@ -55,6 +55,7 @@ public class DeployHadoopMonitoringTest {
deployer.deploy(occiPath);
}
@Ignore
@Test
public void deployHadoopWithNewMonitoring() {
CachedResourceSet.getCache().clear();
......
package de.ugoe.cs.rwm.mocci;
import static org.junit.Assert.assertTrue;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.cmf.occi.core.Configuration;
import org.eclipse.cmf.occi.core.Link;
import org.eclipse.cmf.occi.core.Mixin;
import org.eclipse.cmf.occi.core.OCCIPackage;
import org.eclipse.cmf.occi.core.util.OcciRegistry;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epsilon.emc.emf.CachedResourceSet;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.mocci.TestUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
import de.ugoe.cs.rwm.tocci.Transformator;
import de.ugoe.cs.rwm.tocci.TransformatorFactory;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
import monitoring.MonitoringPackage;
public class DeployHadoopNode2Test {
String manNWid = "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339590";
String manNWRuntimeId = "75a4639e-9ce7-4058-b859-8a711b0e2e7b";
String sshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova";
String userData = "I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj";
@BeforeClass
public static void OCCIRegistrySetup() {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
}
@Before
public void deprovisionEverything() {
CachedResourceSet.getCache().clear();
Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/Empty.occic"));
Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
MartDeployer deployer = new MartDeployer(conn);
deployer.deploy(occiPath);
}
@Test
public void deployHadoopWithNewMonitoring() {
CachedResourceSet.getCache().clear();
System.out.println(OcciRegistry.getInstance().getRegisteredExtensions());
//Logger.getRootLogger().setLevel(Level.FATAL);
Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopCluster2Nodes.occic"));
Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI");
trans.transform(occiPath, occiPath);
OCCI2OPENSTACKTransformator trans2 = OCCI2OPENSTACKTransformator.getInstance();
trans2.setTransformationProperties(manNWRuntimeId, sshKey, userData, manNWid);
trans2.transform(occiPath, occiPath);
Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
MartDeployer deployer = new MartDeployer(conn);
deployer.deploy(occiPath);
assertTrue(TestUtility.equalsRuntime(occiPath, conn));
}
}
......@@ -45,7 +45,7 @@ public class EmptyTest {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
}
@Ignore
@Test
public void deprovisionEverything() {
CachedResourceSet.getCache().clear();
......
package de.ugoe.cs.rwm.mocci;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.epsilon.emc.emf.CachedResourceSet;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.modmacao.occi.platform.Componentlink;
import org.modmacao.occi.platform.impl.PlatformFactoryImpl;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.connector.LocalhostConnector;
public class MapeTest {
@Test
public void deployHadoopWithNewMonitoring() {
@BeforeClass
public static void OCCIRegistrySetup() {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
TestUtility.extensionRegistrySetup();
}
@Before
public void deprovisionEverything() {
CachedResourceSet.getCache().clear();
PlatformFactoryImpl pFactory = new PlatformFactoryImpl();
Componentlink cl = pFactory.createComponentlink();
System.out.println(cl);
Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/Empty.occic"));
Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
MartDeployer deployer = new MartDeployer(conn);
deployer.deploy(occiPath);
InitialDeployment depl = new InitialDeployment(conn);
depl.deploy();
}
@Test
public void Monitor() {
Monitor monitor = MAPE.monitor();
}
@Test
public void Analyze() {
Monitor monitor = MAPE.monitor();
String analysis = MAPE.analyze(monitor);
}
@Test
public void Plan() {
Monitor monitor = MAPE.monitor();
String analysis = MAPE.analyze(monitor);
MAPE.runtimeModel = MAPE.plan(analysis);
}
@Test
public void Execute() {
Monitor monitor = MAPE.monitor();
String analysis = MAPE.analyze(monitor);
MAPE.runtimeModel = MAPE.plan(analysis);
MAPE.execute(MAPE.runtimeModel);
}
}
\ No newline at end of file
......@@ -42,7 +42,7 @@ public class ResolveProxyTest {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
}
@Test
public void resolveProxies() {
Path newOCCI = Paths.get(de.ugoe.cs.rwm.docci.ModelUtility.getPathToResource("occi/hadoopClusterNewExtWithMem.occic"));
......@@ -56,14 +56,17 @@ public class ResolveProxyTest {
for (org.eclipse.cmf.occi.core.Resource res : de.ugoe.cs.rwm.docci.ModelUtility.getResources(newModel)) {
System.out.println("Resource Title: " + res.getTitle());
System.out.println(" Kind: " + res.getKind());
assertTrue(!(res.getKind().eIsProxy()));
for (Link link : res.getLinks()) {
System.out.println(" Link: " + link.getTitle());
System.out.println(" " + " Kind:" + link.getKind());
System.out.println(" " + " Target:" + link.getTarget());
assertTrue(!(link.getKind().eIsProxy()));
}
for (Mixin mix : res.getMixins()) {
System.out.println(" " + mix);
System.out.println(" " + mix.getScheme());
assertTrue(!(mix.eIsProxy()));
}
}
}
......
package de.ugoe.cs.rwm.mocci.live;
import static org.junit.Assert.assertTrue;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.epsilon.emc.emf.CachedResourceSet;
import org.junit.BeforeClass;
import org.junit.Test;
import de.ugoe.cs.rwm.docci.MartDeployer;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.docci.connector.MartConnector;
import de.ugoe.cs.rwm.mocci.TestUtility;
import de.ugoe.cs.rwm.tocci.Transformator;
import de.ugoe.cs.rwm.tocci.TransformatorFactory;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
public class DeployHadoopNode2TestLive {
String manNWid = "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339590";
String manNWRuntimeId = "75a4639e-9ce7-4058-b859-8a711b0e2e7b";
String sshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova";
String userData = "I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj";
@BeforeClass
public static void OCCIRegistrySetup() {
TestUtility.loggerSetup();
TestUtility.extensionRegistrySetup();
}
//public void deprovisionEverything() {
// CachedResourceSet.getCache().clear();
// Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/Empty.occic"));
// Connector conn = new MartConnector("192.168.35.45", 8080, "ubuntu", "~/key.pem");
// MartDeployer deployer = new MartDeployer(conn);
// deployer.deploy(occiPath);
//}
@Test
public void deployHadoopWithNewMonitoring() {
CachedResourceSet.getCache().clear();
Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopCluster2Nodes.occic"));
Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI");
trans.transform(occiPath, occiPath);
OCCI2OPENSTACKTransformator trans2 = OCCI2OPENSTACKTransformator.getInstance();
trans2.setTransformationProperties(manNWRuntimeId, sshKey, userData, manNWid);
trans2.transform(occiPath, occiPath);
Connector conn = new MartConnector("192.168.35.45", 8080, "ubuntu", "~/key.pem");
MartDeployer deployer = new MartDeployer(conn);
deployer.deploy(occiPath);
assertTrue(TestUtility.equalsRuntime(occiPath, conn));
}
}
No preview for this file type
Role Name
=========
A brief description of the role goes here.
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
BSD
Author Information
------------------
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment