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

Add UpScalerSpark

parent 84a9e71a
No related branches found
No related tags found
No related merge requests found
Pipeline #178911 failed
apply plugin: "com.github.psxpaul.execfork"
apply plugin: 'com.github.johnrengelman.shadow'
ext{
ext {
tocciVersion = '1.0.1'
docciVersion = '1.0.1'
docciVersion = '1.0.4'
cocciVersion = '1.0.0'
}
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "gradle.plugin.com.github.psxpaul:gradle-execfork-plugin:0.1.8"
classpath "com.github.jengelman.gradle.plugins:shadow:4.0.3"
}
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "gradle.plugin.com.github.psxpaul:gradle-execfork-plugin:0.1.8"
classpath "com.github.jengelman.gradle.plugins:shadow:4.0.3"
}
}
allprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'eclipse'
apply plugin: 'maven'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven {
url "https://nexus.informatik.uni-goettingen.de/content/repositories/thirdparty/"
}
maven {
url "https://nexus.informatik.uni-goettingen.de/content/repositories/rwm/"
}
}
javadoc {
source = sourceSets.main.allJava
classpath = configurations.compile
failOnError = true
}
test {
testLogging.showStandardStreams = true
mavenCentral()
maven {
url "https://nexus.informatik.uni-goettingen.de/content/repositories/thirdparty/"
}
maven {
url "https://nexus.informatik.uni-goettingen.de/content/repositories/rwm/"
}
}
javadoc {
source = sourceSets.main.allJava
classpath = configurations.compile
failOnError = true
}
test {
testLogging.showStandardStreams = true
testLogging {
exceptionFormat = 'full'
}
}
exceptionFormat = 'full'
}
}
}
configure([project(':de.ugoe.cs.rwm.mocci.connector'), project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject]) {
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'jacoco'
checkstyle {
checkstyle {
toolVersion = '8.2'
configFile = rootProject.file('config/checkstyle/checkstyle.xml')
configProperties = [
......@@ -67,104 +67,105 @@ configure([project(':de.ugoe.cs.rwm.mocci.connector'), project(':de.ugoe.cs.rwm.
ignoreFailures = false
showViolations = true
}
findbugs {
sourceSets = [sourceSets.main]
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled false
html.enabled true
}
}
test.finalizedBy jacocoTestReport
jacoco {
toolVersion = "0.8.1"
}
jacocoTestReport {
additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
reports {
xml.enabled false
csv.enabled false
}
}
sourceSets = [sourceSets.main]
ignoreFailures = true
}
tasks.withType(FindBugs) {
reports {
xml.enabled false
html.enabled true
}
}
test.finalizedBy jacocoTestReport
jacoco {
toolVersion = "0.8.1"
}
jacocoTestReport {
additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
reports {
xml.enabled false
csv.enabled false
}
}
}
sourceSets {
startMartServer {
resources {
srcDir 'src/test/resources'
startMartServer {
resources {
srcDir 'src/test/resources'
}
}
}
}
eclipse.classpath.file.beforeMerged{ classpath -> classpath.entries.clear() }
dependencies {
//occiware
compile group: 'org.eclipse.cmf.occi', name: 'core', version: '1.0.0'
compile group: 'org.eclipse.cmf.occi', name: 'infrastructure', version: '1.0.0'
compile group: 'org.eclipse.cmf.occi', name: 'crtp', version: '1.0.0'
compile group: 'org.modmacao', name: 'core', version: '1.0.0'
compile group: 'org.modmacao', name: 'placement', version: '1.0.0'
compile group: 'org.modmacao.occi', name: 'platform', version: '1.0.0'
compile group: 'org.modmacao.openstack', name: 'runtime', version: '1.0.0'
compile group: 'org.modmacao.openstack.swe', name: 'runtime', version: '1.0.0'
compile group: 'org.modmacao', name: 'ansible', version: '1.0.0'
//own
compile group: 'de.ugoe.cs.rwm', name: 'cocci', version: cocciVersion
compile group: 'de.ugoe.cs.rwm', name: 'docci', version: docciVersion
compile group: 'de.ugoe.cs.rwm', name: 'tocci', version: tocciVersion
compile group: 'de.ugoe.cs.rwm.pog', name: 'model', version: '1.0.0'
//compile group: 'de.ugoe.cs.rwm.mocci', name: 'model', version: '1.0.0'
compile project(':de.ugoe.cs.rwm.mocci.model')
//maven
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'com.google.guava', name: 'guava', version: '25.1-jre'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.0'
compile "org.eclipse.core:org.eclipse.core.runtime:3.7.0"
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
//Nexus
compile "org.eclipse.uml2:org.eclipse.uml2.uml:4.1.2"
//runtime?
compile "org.eclipse.uml2:org.eclipse.uml2.types:1.1.0"
compile "org.eclipse.uml2:org.eclipse.uml2.common:1.8.2"
compile group: 'org.eclipse.ocl', name: 'pivot', version: '1.3.0'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
eclipse.classpath.file.beforeMerged { classpath -> classpath.entries.clear() }
dependencies {
//occiware
compile group: 'org.eclipse.cmf.occi', name: 'core', version: '1.0.0'
compile group: 'org.eclipse.cmf.occi', name: 'infrastructure', version: '1.0.0'
compile group: 'org.eclipse.cmf.occi', name: 'crtp', version: '1.0.0'
compile group: 'org.modmacao', name: 'core', version: '1.0.0'
compile group: 'org.modmacao', name: 'placement', version: '1.0.0'
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.eclipse.cmf.occi', name: 'docker', version: '1.0.0'
project(':de.ugoe.cs.rwm.mocci.model.edit') {
dependencies {
//own
compile group: 'de.ugoe.cs.rwm.domain', name: 'workload', version: '1.0.1'
compile group: 'de.ugoe.cs.rwm', name: 'cocci', version: cocciVersion
compile group: 'de.ugoe.cs.rwm', name: 'docci', version: docciVersion
compile group: 'de.ugoe.cs.rwm', name: 'tocci', version: tocciVersion
compile group: 'de.ugoe.cs.rwm.pog', name: 'model', version: '1.0.0'
//compile group: 'de.ugoe.cs.rwm.mocci', name: 'model', version: '1.0.0'
compile project(':de.ugoe.cs.rwm.mocci.model')
}
//maven
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'com.google.guava', name: 'guava', version: '25.1-jre'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.0'
compile "org.eclipse.core:org.eclipse.core.runtime:3.7.0"
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
//Nexus
compile "org.eclipse.uml2:org.eclipse.uml2.uml:4.1.2"
//runtime?
compile "org.eclipse.uml2:org.eclipse.uml2.types:1.1.0"
compile "org.eclipse.uml2:org.eclipse.uml2.common:1.8.2"
compile group: 'org.eclipse.ocl', name: 'pivot', version: '1.3.0'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
project(':de.ugoe.cs.rwm.mocci.connector') {
dependencies {
compile project(':de.ugoe.cs.rwm.mocci.model')
}
project(':de.ugoe.cs.rwm.mocci.model.edit') {
dependencies {
compile project(':de.ugoe.cs.rwm.mocci.model')
}
}
project(':de.ugoe.cs.rwm.mocci.connector.dummy') {
dependencies {
compile project(':de.ugoe.cs.rwm.mocci.model')
}
project(':de.ugoe.cs.rwm.mocci.connector') {
dependencies {
compile project(':de.ugoe.cs.rwm.mocci.model')
}
}
project(':de.ugoe.cs.rwm.mocci.connector.dummy') {
dependencies {
compile project(':de.ugoe.cs.rwm.mocci.model')
}
}
jar {
......@@ -198,7 +199,7 @@ task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
dependsOn = subprojects.test
additionalSourceDirs = files([project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject].sourceSets.main.allSource.srcDirs)
sourceDirectories = files([project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject].sourceSets.main.allSource.srcDirs)
classDirectories = files([project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject].sourceSets.main.output)
classDirectories = files([project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject].sourceSets.main.output)
executionData = files([project(':de.ugoe.cs.rwm.mocci.connector.dummy'), rootProject].jacocoTestReport.executionData)
reports {
xml.enabled false
......@@ -208,17 +209,17 @@ task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
uploadArchives {
repositories {
mavenDeployer {
repository(url: "https://nexus.informatik.uni-goettingen.de/content/repositories/rwm/") {
authentication(userName: System.getenv('NEXUSUSER'), password: System.getenv('NEXUSPASSWORD'))
mavenDeployer {
repository(url: "https://nexus.informatik.uni-goettingen.de/content/repositories/rwm/") {
authentication(userName: System.getenv('NEXUSUSER'), password: System.getenv('NEXUSPASSWORD'))
}
if (System.getenv('VERSION') != null) {
pom.version = System.getenv('VERSION')
println "Version is set to: " + System.getenv('VERSION')
}
if (System.getenv('VERSION') != null) {
pom.version = System.getenv('VERSION')
println "Version is set to: " + System.getenv('VERSION')
}
pom.version = "SNAPSHOT"
pom.artifactId = "mocci"
pom.groupId = "de.ugoe.cs.rwm"
}
pom.version = "SNAPSHOT"
pom.artifactId = "mocci"
pom.groupId = "de.ugoe.cs.rwm"
}
}
}
/**
* Copyright (c) 2018-2019 University of Goettingen
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* - Johannes Erbel <johannes.erbel@cs.uni-goettingen.de>
*/
package de.ugoe.cs.rwm.mocci;
import java.nio.file.Path;
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.Container;
import org.eclipse.cmf.occi.docker.DockerFactory;
import org.eclipse.cmf.occi.infrastructure.Compute;
import org.eclipse.cmf.occi.infrastructure.ComputeStatus;
import org.eclipse.emf.ecore.resource.Resource;
import org.modmacao.occi.platform.Application;
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.*;
public class UpScalerSpark extends AbsScaler {
public UpScalerSpark(Connector conn, Path runtimePath) {
this.conn = conn;
this.runtimePath = runtimePath;
}
@SuppressWarnings("unused")
public Resource upScaleNodes() {
runtimeModel = ModelUtility.loadOCCIintoEMFResource(conn.loadRuntimeModel(runtimePath));
Configuration config = ((Configuration) runtimeModel.getContents().get(0));
Compute comp = addCompute(config);
Component worker = addWorkerComponent(config, comp);
Sensor sens = addSensor(config, comp);
Resultprovider rp = addResultProvider(config, comp, sens);
config.getResources().add(comp);
config.getResources().add(worker);
config.getResources().add(sens);
config.getResources().add(rp);
return runtimeModel;
}
private Compute addCompute(Configuration config) {
System.out.println(" Adding Compute Node to Model");
Compute comp = iFactory.createCompute();
comp.setOcciComputeState(ComputeStatus.ACTIVE);
Container cont = DockerFactory.eINSTANCE.createContainer();
comp.setKind(cont.getKind());
AttributeState state = factory.createAttributeState();
state.setName("occi.compute.state");
state.setValue("active");
comp.getAttributes().add(state);
config.getResources().add(comp);
comp.setTitle("Hadoop-Worker-additional");
AttributeState hostname = factory.createAttributeState();
hostname.setName("occi.compute.hostname");
hostname.setValue("Hadoop-Worker-additional");
comp.getAttributes().add(hostname);
Computesim sim = WorkloadFactory.eINSTANCE.createComputesim();
comp.getParts().add(sim);
return comp;
}
private Component addWorkerComponent(Configuration config, Compute comp) {
System.out.println(" Adding Worker Component to Model");
Component worker = pFactory.createComponent();
worker.setTitle("hWorker");
// worker.setOcciComponentState(Status.ACTIVE);
config.getResources().add(worker);
AttributeState attr = factory.createAttributeState();
attr.setName("occi.core.id");
attr.setValue(worker.getId());
worker.getAttributes().add(attr);
MixinBase mBase = factory.createMixinBase();
mBase.setMixin(getMixin("hadoop-worker", config));
worker.getParts().add(mBase);
Placementlink pLink = placeFactory.createPlacementlink();
pLink.setSource(worker);
pLink.setTarget(comp);
Componentlink compLink = pFactory.createComponentlink();
compLink.setSource(getResourceById(config.getResources(), getApplicationId(config)));
compLink.setTarget(worker);
Componentsim sim = WorkloadFactory.eINSTANCE.createComponentsim();
worker.getParts().add(sim);
MAPE.newComp = worker;
return worker;
}
private String getApplicationId(Configuration config) {
for (org.eclipse.cmf.occi.core.Resource res : config.getResources()) {
if (res instanceof Application) {
if (res.getTitle().toLowerCase().contains("hadoop")) {
return res.getId();
}
}
}
return "";
}
private Sensor addSensor(Configuration config, Compute comp) {
System.out.println(" Adding Sensor to Model");
Sensor sens = mFactory.createSensor();
sens.setTitle("CPUSensor");
config.getResources().add(sens);
AttributeState attr = factory.createAttributeState();
attr.setName("occi.core.id");
attr.setValue(sens.getId());
sens.getAttributes().add(attr);
Monitorableproperty mp = mFactory.createMonitorableproperty();
mp.setTitle("monProp");
mp.setMonitoringProperty("CPU");
AttributeState attrProp = factory.createAttributeState();
attrProp.setName("monitoring.property");
attrProp.setValue("CPU");
mp.getAttributes().add(attrProp);
mp.setSource(sens);
mp.setTarget(comp);
Sensorsim sim = WorkloadFactory.eINSTANCE.createSensorsim();
sim.setSimChangeRate(3000);
sim.setSimMonitoringResults("None, None, High, Critical");
sens.getParts().add(sim);
return sens;
}
private Datagatherer addDataGatherer(Configuration config, Compute comp, Sensor sens) {
System.out.println(" Adding Datagatherer to Model");
Datagatherer dg = mFactory.createDatagatherer();
dg.setTitle("CPUGatherer");
config.getResources().add(dg);
AttributeState attr = factory.createAttributeState();
attr.setName("occi.core.id");
attr.setValue(dg.getId());
dg.getAttributes().add(attr);
MixinBase mBase = factory.createMixinBase();
mBase.setMixin(getMixin("cpugatherer", config));
dg.getParts().add(mBase);
Componentlink c1 = pFactory.createComponentlink();
c1.setSource(sens);
c1.setTarget(dg);
Placementlink pl = placeFactory.createPlacementlink();
pl.setSource(dg);
pl.setTarget(comp);
return dg;
}
private Dataprocessor addDataProcessor(Configuration config, Compute comp, Sensor sens, Datagatherer dg) {
System.out.println(" Adding Dataprocessor to Model");
Dataprocessor dp = mFactory.createDataprocessor();
dp.setTitle("CPUProcessor");
config.getResources().add(dp);
AttributeState attr = factory.createAttributeState();
attr.setName("occi.core.id");
attr.setValue(dp.getId());
dp.getAttributes().add(attr);
MixinBase mBase = factory.createMixinBase();
mBase.setMixin(getMixin("cpuprocessorlocal", config));
dp.getParts().add(mBase);
Componentlink c2 = pFactory.createComponentlink();
c2.setSource(sens);
c2.setTarget(dp);
Placementlink pl = placeFactory.createPlacementlink();
pl.setSource(dp);
pl.setTarget(comp);
Componentlink cl = pFactory.createComponentlink();
cl.setSource(dp);
cl.setTarget(dg);
return dp;
}
private Resultprovider addResultProvider(Configuration config, Compute comp, Sensor sens) {
System.out.println(" Adding Resultprovider to Model");
Resultprovider rp = mFactory.createResultprovider();
rp.setTitle("CPUProvider");
config.getResources().add(rp);
Occiresultprovider orp = mFactory.createOcciresultprovider();
orp.setResultProviderEndpoint("localhost:8080");
AttributeState attrOP = factory.createAttributeState();
attrOP.setName("result.provider.endpoint");
attrOP.setValue("localhost:8080");
rp.getAttributes().add(attrOP);
rp.getParts().add(orp);
MixinBase mBase = factory.createMixinBase();
mBase.setMixin(getMixin("cpupublisher", config));
rp.getParts().add(mBase);
AttributeState attr = factory.createAttributeState();
attr.setName("occi.core.id");
attr.setValue(rp.getId());
rp.getAttributes().add(attr);
Componentlink c3 = pFactory.createComponentlink();
c3.setSource(sens);
c3.setTarget(rp);
Placementlink pl = placeFactory.createPlacementlink();
pl.setSource(rp);
pl.setTarget(comp);
Componentsim sim = WorkloadFactory.eINSTANCE.createComponentsim();
rp.getParts().add(sim);
return rp;
}
private Mixin getMixin(String string, Configuration config) {
for (Mixin mix : config.getMixins()) {
if (mix.getTerm().equals(string)) {
return mix;
}
}
return null;
}
}
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