/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ package org.cloudml.core.samples; import org.cloudml.core.Deployment; import org.cloudml.core.ExternalComponent; import org.cloudml.core.builders.DeploymentBuilder; import org.cloudml.core.builders.ExternalComponentBuilder; import org.cloudml.core.builders.InternalComponentBuilder; import org.cloudml.core.builders.RelationshipBuilder; import org.cloudml.core.credentials.FileCredentials; import static org.cloudml.core.builders.Commons.*; /** * Created by Nicolas Ferry on 08.05.14. */ public class PaasCloudBees { public static DeploymentBuilder completeCloudBeesPaaS() { ExternalComponentBuilder dbb = anExternalComponent() .named("cbdb") .with( aProvidedPort().named("db") ) .providedBy("CloudBees"); ExternalComponentBuilder wserverb = anExternalComponent() .named("granny-cloudml") .with( aProvidedExecutionPlatform() .named("tomcatProvided") ) .providedBy("CloudBees"); InternalComponentBuilder grannyb = anInternalComponent() .named("granny-war") .with(aRequiredExecutionPlatform().named("tomcat")) .withProperty("warfile", "C:\\temp\\granny-common.war") .withProperty("temp-warfile", "C:\\temp\\granny-common-temp.war") .with(aRequiredPort().remote().named("dbr").mandatory()); RelationshipBuilder relb = aRelationship() .from("granny-war", "dbr") .to("cbdb", "db") .named("dbrel") .withResource( aResource() .named("dbconfig") .withProperty("valet","war-xml") .withProperty("entry_spring", "WEB-INF/classes/META-INF/spring/app-context.xml") .withProperty("path_dburl", "@self{properties/entry_spring}:://bean[@id=\"dataSource\"]/property[@name=\"url\"]/@value") .withProperty("value_dburl", "jdbc:mysql://@instance{providedEnd/owner/value/publicAddress}") .withProperty("path_dbuser", "@self{properties/entry_spring}:://bean[@id=\"dataSource\"]/property[@name=\"username\"]/@value") .withProperty("value_dbuser", "@instance{providedEnd/owner/value/type/login}") .withProperty("path_dbpassword", "@self{properties/entry_spring}:://bean[@id=\"dataSource\"]/property[@name=\"username\"]/@value") .withProperty("value_dbpassword", "@instance{providedEnd/owner/value/type/passwd}") // .withProperty("valet", "war-xml") // .withProperty("path", "WEB-INF/classes/META-INF/spring/app-context.xml") // .withProperty("#getPublicAddress", "//bean[@id=\"dataSource\"]/property[@name=\"url\"]/@value") // .withProperty("@#getPublicAddress-prefix", "jdbc:mysql://") // .withProperty("##getLogin","//bean[@id=\"dataSource\"]/property[@name=\"username\"]/@value") // .withProperty("##getPasswd","//bean[@id=\"dataSource\"]/property[@name=\"password\"]/@value") ); DeploymentBuilder dmb = new DeploymentBuilder() .named("cloudbees-deployment") .with(aProvider() .named("CloudBees") .withProperty("account", "mod4cloud") ) .with(dbb) .with(grannyb) .with(wserverb) .with(relb); dmb.with(anExternalComponentInstance() .named("cbdb1") .ofType("cbdb") ).with(anExternalComponentInstance() .named("granny-cloudml1") .ofType("granny-cloudml") ).with(anInternalComponentInstance() .named("granny-war-i") .ofType("granny-war") .hostedBy("granny-cloudml1") ).with(aRelationshipInstance() .named("dbreli") .ofType("dbrel") .from("granny-war-i", "dbr") .to("cbdb1", "db") ) ; return dmb; } }