diff --git a/build.gradle b/build.gradle index 89c17f60342e11e908959ff19b3ce21b63b327d7..e232adab8fd039d2f03b44fa531338f4ba2668b3 100644 --- a/build.gradle +++ b/build.gradle @@ -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' diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java index 0e81ad2a3b12e44408c615e96fc7c0217e3791e3..f19fd18ed751813ea5d94f66988bab48c3367fea 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/AbsScaler.java @@ -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; diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java index aea7d1e67785a801a17afb7ee554b3455dbaeeec..b9fa4a22dacf049f5f8fb7bc3870fc1bf5be26d7 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/DownScaler.java @@ -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()); + } + } + } } } diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java index 91d086d6616281d3bbfbe15c429b1ffe3ce48223..f40b27ed60923c8a0da8bb52b3da4771c7468362 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/MAPE.java @@ -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); } diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java b/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java index 3d80c677ee099e5f684c2acb4f18044510947eaa..456ee04d7c2f1ba970c5e3be2215d26fa2e06c4f 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/RegistryAndLoggerSetup.java @@ -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(); diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java b/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java index 229752522d138bf66440f1d907cb31df65ab3b0d..5ea1c19cb1bce1d4f96b52b40903f806a6a4995c 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/UpScaler.java @@ -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"); diff --git a/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java b/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSim.java similarity index 98% rename from src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java rename to src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSim.java index 5cf2c45c6f5b5f92c10889955d2840b214374e59..5cdd700997b0c08a03dc113846fbd4392c1d27b3 100644 --- a/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSpark.java +++ b/src/main/java/de/ugoe/cs/rwm/mocci/UpScalerSim.java @@ -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(); diff --git a/src/test/resources/martserver-plugins/org.modmacao.ansible_1.0.0.201808232105.jar b/src/test/resources/martserver-plugins/org.modmacao.ansible_1.0.0.201808232105.jar deleted file mode 100755 index d20d0f7d68b587bc9e24063861fdb68262ecf9a7..0000000000000000000000000000000000000000 Binary files a/src/test/resources/martserver-plugins/org.modmacao.ansible_1.0.0.201808232105.jar and /dev/null differ