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

Update Scaling Engine for Spark Cloud scenario

parent b97f4dee
No related branches found
No related tags found
No related merge requests found
Pipeline #245235 failed
......@@ -118,7 +118,7 @@ dependencies {
compile group: 'org.modmacao.occi', name: 'platform', version: '1.0.0'
compile group: 'org.modmacao.openstack', name: 'runtime', version: '1.0.1'
compile group: 'org.modmacao.openstack.swe', name: 'runtime', version: '1.0.0'
compile group: 'org.modmacao', name: 'ansible', version: '1.0.0'
compile group: 'org.modmacao', name: 'ansible', version: '1.0.1'
compile group: 'org.eclipse.cmf.occi', name: 'docker', version: '1.0.0'
......
......@@ -19,6 +19,7 @@ import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl;
import org.eclipse.cmf.occi.infrastructure.impl.InfrastructureFactoryImpl;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.resource.Resource;
import org.modmacao.ansibleconfiguration.impl.AnsibleconfigurationFactoryImpl;
import org.modmacao.occi.platform.impl.PlatformFactoryImpl;
import org.modmacao.placement.impl.PlacementFactoryImpl;
......@@ -33,6 +34,7 @@ public abstract class AbsScaler {
protected PlatformFactoryImpl pFactory = new PlatformFactoryImpl();
protected PlacementFactoryImpl placeFactory = new PlacementFactoryImpl();
protected OssweruntimeFactoryImpl osFactory = new OssweruntimeFactoryImpl();
protected AnsibleconfigurationFactoryImpl aFactory = new AnsibleconfigurationFactoryImpl();
protected Resource runtimeModel;
protected Connector conn;
protected Path runtimePath;
......
......@@ -28,6 +28,7 @@ import org.modmacao.occi.platform.Component;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import monitoring.Monitorableproperty;
import monitoring.Sensor;
public class DownScaler extends AbsScaler {
......@@ -59,7 +60,9 @@ public class DownScaler extends AbsScaler {
if (atLeastTwoWorkers(config)) {
System.out.println(" VM with None CPU utilization found: " + comp.getId());
addConnectedLinksAndComponents(comp);
addConnectedLinksAndComponents(monProp.getSource());
resourcesToDelete.add(comp);
resourcesToDelete.add(monProp.getSource());
System.out.println(
" Delete Entities Around: " + comp.getTitle() + " (" + comp.getId() + ")");
downScale = true;
......@@ -82,8 +85,12 @@ public class DownScaler extends AbsScaler {
config.getResources().removeAll(resourcesToDelete);
for (org.eclipse.cmf.occi.core.Resource res : resourcesToDelete) {
for (Link l : res.getLinks()) {
EcoreUtil.delete(l);
}
EcoreUtil.delete(res);
}
Resource rM = runtimeModel;
MAPE.newComp = null;
CachedResourceSet.getCache().clear();
......@@ -119,7 +126,7 @@ public class DownScaler extends AbsScaler {
return null;
}
private void addConnectedLinksAndComponents(Compute comp) {
private void addConnectedLinksAndComponents(org.eclipse.cmf.occi.core.Resource comp) {
linksToDelete.addAll(comp.getLinks());
linksToDelete.addAll(comp.getRlinks());
......@@ -152,6 +159,16 @@ public class DownScaler extends AbsScaler {
*/
}
}
if (comp instanceof Sensor) {
for (Link l : comp.getLinks()) {
if (l.getTarget() instanceof Component) {
resourcesToDelete.add(l.getTarget());
linksToDelete.addAll(l.getTarget().getLinks());
linksToDelete.addAll(l.getTarget().getRlinks());
}
}
}
}
}
......@@ -16,13 +16,13 @@ import java.nio.file.Paths;
import java.util.Scanner;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
import org.json.JSONArray;
import org.modmacao.occi.platform.Component;
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.connector.MartConnector;
import de.ugoe.cs.rwm.docci.executor.MartExecutor;
import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
......@@ -35,9 +35,8 @@ import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator;
*/
public class MAPE {
protected static final Path RUNTIMEPATH = Paths.get(System.getProperty("user.home") + "/.rwm/runtime.occic");
static Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
// static Connector conn = new MartConnector("192.168.35.45", 8080, "ubuntu",
// "~/key.pem");
// static Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu");
static Connector conn = new MartConnector("192.168.35.45", 8080, "ubuntu", "~/key.pem");
static MartExecutor executor = new MartExecutor(conn);
static Resource runtimeModel;
static Component newComp;
......@@ -112,10 +111,11 @@ public class MAPE {
if (noneCPUs == 0 && critCPUs > allCPUs / 2 && allCPUs <= 6) {
System.out.println("Analyze: Critical State Detected");
return "upScale";
} else {
} else if (allCPUs > 2) {
System.out.println("Analyze: Non Critical State Detected");
return "downScale";
}
return "noScale";
}
public static Resource plan(String analysis) {
......@@ -129,7 +129,7 @@ public class MAPE {
DownScaler downscaler = new DownScaler(conn, RUNTIMEPATH);
return downscaler.downScaleNodes();
}
return null;
return ModelUtility.loadOCCIintoEMFResource(RUNTIMEPATH);
}
......@@ -138,18 +138,22 @@ public class MAPE {
System.out.println("Execute: Skipped as no scaling planned");
}
System.out.println("Execute: Deploying adjusted Model");
Path occiPath = RUNTIMEPATH;
Path occiPath = RUNTIMEPATH;
OCCI2OPENSTACKTransformator trans2 = new OCCI2OPENSTACKTransformator();
trans2.setTransformationProperties(RegistryAndLoggerSetup.manNWRuntimeId, RegistryAndLoggerSetup.sshKey,
RegistryAndLoggerSetup.userData, RegistryAndLoggerSetup.manNWid);
// trans2.transform(runtimeModel, occiPath);
// runtimeModel = ModelUtility.loadOCCIintoEMFResource(occiPath);
try {
trans2.transform(runtimeModel, occiPath);
} catch (EolRuntimeException e) {
e.printStackTrace();
}
runtimeModel = ModelUtility.loadOCCIintoEMFResource(occiPath);
MartDeployer deployer;
if (conn instanceof MartConnector) {
deployer = new MartDeployer(conn, 100000);
deployer = new MartDeployer(conn, 1000);
} else {
deployer = new MartDeployer(conn);
}
......
......@@ -44,7 +44,7 @@ public class RegistryAndLoggerSetup {
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";
static String userData = "I2Nsb3VkLWNvbmZpZwpydW5jbWQ6CiAgLSBbIHN5c3RlbWN0bCwgc3RvcCwgYXB0LWRhaWx5LnNlcnZpY2UgXQogIC0gWyBzeXN0ZW1jdGwsIGtpbGwsIC0ta2lsbC13aG89YWxsLCBhcHQtZGFpbHkuc2VydmljZSBd";
public static void setup() {
loggerSetup();
......
......@@ -17,7 +17,6 @@ import org.eclipse.cmf.occi.core.AttributeState;
import org.eclipse.cmf.occi.core.Configuration;
import org.eclipse.cmf.occi.core.Mixin;
import org.eclipse.cmf.occi.core.MixinBase;
import org.eclipse.cmf.occi.docker.DockerFactory;
import org.eclipse.cmf.occi.infrastructure.Compute;
import org.eclipse.cmf.occi.infrastructure.ComputeStatus;
import org.eclipse.cmf.occi.infrastructure.Ipnetworkinterface;
......@@ -60,7 +59,7 @@ public class UpScaler extends AbsScaler {
System.out.println(" Adding Compute Node to Model");
Compute comp = iFactory.createCompute();
comp.setOcciComputeState(ComputeStatus.ACTIVE);
comp.setKind(DockerFactory.eINSTANCE.createContainer().getKind());
// comp.setKind(DockerFactory.eINSTANCE.createContainer().getKind());
AttributeState state = factory.createAttributeState();
state.setName("occi.compute.state");
......
......@@ -11,8 +11,13 @@
package de.ugoe.cs.rwm.mocci;
import java.nio.file.Path;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.domain.workload.Componentsim;
import de.ugoe.cs.rwm.domain.workload.Computesim;
import de.ugoe.cs.rwm.domain.workload.Sensorsim;
import de.ugoe.cs.rwm.domain.workload.WorkloadFactory;
import monitoring.*;
import org.eclipse.cmf.occi.core.AttributeState;
import org.eclipse.cmf.occi.core.Configuration;
import org.eclipse.cmf.occi.core.Mixin;
......@@ -27,17 +32,11 @@ import org.modmacao.occi.platform.Component;
import org.modmacao.occi.platform.Componentlink;
import org.modmacao.placement.Placementlink;
import de.ugoe.cs.rwm.docci.ModelUtility;
import de.ugoe.cs.rwm.docci.connector.Connector;
import de.ugoe.cs.rwm.domain.workload.Componentsim;
import de.ugoe.cs.rwm.domain.workload.Computesim;
import de.ugoe.cs.rwm.domain.workload.Sensorsim;
import de.ugoe.cs.rwm.domain.workload.WorkloadFactory;
import monitoring.*;
import java.nio.file.Path;
public class UpScalerSpark extends AbsScaler {
public class UpScalerSim extends AbsScaler {
public UpScalerSpark(Connector conn, Path runtimePath) {
public UpScalerSim(Connector conn, Path runtimePath) {
this.conn = conn;
this.runtimePath = runtimePath;
}
......@@ -65,7 +64,6 @@ public class UpScalerSpark extends AbsScaler {
Compute comp = iFactory.createCompute();
comp.setOcciComputeState(ComputeStatus.ACTIVE);
Container cont = DockerFactory.eINSTANCE.createContainer();
comp.setKind(cont.getKind());
AttributeState state = factory.createAttributeState();
......
File deleted
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