added persistance volume capability
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/01060f53 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/01060f53 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/01060f53 Branch: refs/heads/master Commit: 01060f53b34ac4b7b056505431657804fc0d1851 Parents: a0d6ce5 Author: Udara Liyanage <[email protected]> Authored: Sat Jan 11 19:20:48 2014 -0500 Committer: Udara Liyanage <[email protected]> Committed: Sat Jan 11 19:20:48 2014 -0500 ---------------------------------------------------------------------- .../cloud/controller/pojo/Cartridge.java | 16 + .../cloud/controller/pojo/CartridgeConfig.java | 20 +- .../controller/pojo/PersistanceMapping.java | 93 +++ .../controller/util/CloudControllerUtil.java | 4 + .../definition/CartridgeDefinitionBean.java | 16 +- .../definition/PersistanceMappingBean.java | 38 ++ .../bean/util/converter/PojoConverter.java | 31 +- .../main/resources/CloudControllerService.wsdl | 601 ++++++++++--------- 8 files changed, 518 insertions(+), 301 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java index d52e52b..f43dfba 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java @@ -57,6 +57,8 @@ public class Cartridge implements Serializable{ private List<PortMapping> portMappings = new ArrayList<PortMapping>(); + private List<PersistanceMapping> peristanceMappings = new ArrayList<PersistanceMapping>(); + private List<AppType> appTypeMappings = new ArrayList<AppType>(); /** @@ -301,5 +303,19 @@ public class Cartridge implements Serializable{ public void setDefaultAutoscalingPolicy(String defaultAutoscalingPolicy) { this.defaultAutoscalingPolicy = defaultAutoscalingPolicy; } + + /** + * @return the peristanceMappings + */ + public List<PersistanceMapping> getPeristanceMappings() { + return peristanceMappings; + } + + /** + * @param peristanceMappings the peristanceMappings to set + */ + public void setPeristanceMappings(List<PersistanceMapping> peristanceMappings) { + this.peristanceMappings = peristanceMappings; + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CartridgeConfig.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CartridgeConfig.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CartridgeConfig.java index e34ac77..6b46ec5 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CartridgeConfig.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CartridgeConfig.java @@ -49,11 +49,13 @@ public class CartridgeConfig implements Serializable { private PortMapping[] portMappings; + private PersistanceMapping [] persistanceMappings; + private String defaultAutoscalingPolicy; private Properties properties; - private IaasConfig[] iaasConfigs; + private IaasConfig[] iaasConfigs; private LoadbalancerConfig lbConfig; @@ -165,7 +167,7 @@ public class CartridgeConfig implements Serializable { private String getDeploymentDetails () { StringBuilder deploymentDetailBuilder = new StringBuilder(); - deploymentDetailBuilder.append("Base direcotry: " + baseDir); + deploymentDetailBuilder.append("Base direcotry: " + getBaseDir()); if(deploymentDirs != null) { if(deploymentDirs.length > 0) { deploymentDetailBuilder.append(" Direcotries: "); @@ -233,4 +235,18 @@ public class CartridgeConfig implements Serializable { public void setDefaultAutoscalingPolicy(String defaultAutoscalingPolicy) { this.defaultAutoscalingPolicy = defaultAutoscalingPolicy; } + + /** + * @return the persistanceMappings + */ + public PersistanceMapping [] getPersistanceMappings() { + return persistanceMappings; + } + + /** + * @param persistanceMappings the persistanceMappings to set + */ + public void setPersistanceMappings(PersistanceMapping [] persistanceMappings) { + this.persistanceMappings = persistanceMappings; + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/PersistanceMapping.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/PersistanceMapping.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/PersistanceMapping.java new file mode 100644 index 0000000..f555b0a --- /dev/null +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/PersistanceMapping.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.stratos.cloud.controller.pojo; + +import java.io.Serializable; + +public class PersistanceMapping implements Serializable{ + + private static final long serialVersionUID = 3455721979991902731L; + private String snapshotId; + private int size; + private String device; + private boolean removeOntermination; + + public String toString () { + return "Snapshot: " + snapshotId + ", Size: " + size + ", device: " + device + " remove on termination " + removeOntermination; + } + + /** + * @return the snapshotId + */ + public String getSnapshotId() { + return snapshotId; + } + + + + /** + * @param snapshotId the snapshotId to set + */ + public void setSnapshotId(String snapshotId) { + this.snapshotId = snapshotId; + } + + /** + * @return the size + */ + public int getSize() { + return size; + } + + /** + * @param size the size to set + */ + public void setSize(int size) { + this.size = size; + } + + /** + * @return the device + */ + public String getDevice() { + return device; + } + + /** + * @param device the device to set + */ + public void setDevice(String device) { + this.device = device; + } + + /** + * @return the removeOntermination + */ + public boolean isRemoveOntermination() { + return removeOntermination; + } + + /** + * @param removeOntermination the removeOntermination to set + */ + public void setRemoveOntermination(boolean removeOntermination) { + this.removeOntermination = removeOntermination; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java index 53a28ae..99eca34 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java @@ -68,6 +68,10 @@ public class CloudControllerUtil { cartridge.setVersion(config.getVersion()); cartridge.setBaseDir(config.getBaseDir()); cartridge.setPortMappings(Arrays.asList(config.getPortMappings())); + + if(config.getPersistanceMappings() != null && config.getPersistanceMappings().length >0){ + cartridge.setPeristanceMappings(Arrays.asList(config.getPersistanceMappings())); + } cartridge.setMultiTenant(config.isMultiTenant()); cartridge.setDefaultAutoscalingPolicy(config.getDefaultAutoscalingPolicy()); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java index 7984b5f..5466a51 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java @@ -43,6 +43,8 @@ public class CartridgeDefinitionBean { public DeploymentBean deployment; public List<PortMappingBean> portMapping; + + public List<PersistanceMappingBean> persistanceMapping; public List<IaasProviderBean> iaasProvider; @@ -57,10 +59,20 @@ public class CartridgeDefinitionBean { return "Type: " + type + ", Provider: " + provider + ", Host: " + host + ", Display Name: " + displayName + ", Description: " + description + ", Version: " + version + ", Multitenant " + multiTenant + "\n" + getDeploymentDetails() + "\n PortMapping: " + getPortMappings() + "\n IaaS: " + getIaasProviders() + - "\n LoadBalancer: " + getLoadBalancerInfo() + "\n Properties: " + getProperties(); + "\n LoadBalancer: " + getLoadBalancerInfo() + "\n Properties: " + getProperties() +"\n Volume mappings "+ getPersistanceMappings(); } - private String getDeploymentDetails () { + private String getPersistanceMappings() { + StringBuilder persistanceMappingBuilder = new StringBuilder(); + if(persistanceMapping != null && !persistanceMapping.isEmpty()) { + for(PersistanceMappingBean persistancetMappingBean : persistanceMapping) { + persistanceMappingBuilder.append(persistancetMappingBean.toString()); + } + } + return persistanceMappingBuilder.toString(); + } + + private String getDeploymentDetails () { if(deployment != null) { return deployment.toString(); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/PersistanceMappingBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/PersistanceMappingBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/PersistanceMappingBean.java new file mode 100644 index 0000000..2b7229d --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/PersistanceMappingBean.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.stratos.rest.endpoint.bean.cartridge.definition; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class PersistanceMappingBean { + + public String snapshotId; + + public int size; + + public String device; + + public boolean removeOnTermination; + + public String toString () { + return " [ Snapshot : " + snapshotId + ", Size: " + size + ", device: " + device + " remove on termination " + removeOnTermination +"] "; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/01060f53/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java index d6085fb..b251a6d 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java @@ -27,8 +27,11 @@ import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.Deploy import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.IaasProviderBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.LoadBalancerBean; +import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PersistanceMappingBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PortMappingBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean; +import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PersistanceMappingBean; + import java.util.ArrayList; import java.util.List; @@ -60,6 +63,12 @@ public class PojoConverter { if(cartridgeDefinitionBean.portMapping != null && !cartridgeDefinitionBean.portMapping.isEmpty()) { cartridgeConfig.setPortMappings(getPortMappingsAsArray(cartridgeDefinitionBean.portMapping)); } + + //persistance mapping + if(cartridgeDefinitionBean.persistanceMapping != null && !cartridgeDefinitionBean.persistanceMapping.isEmpty()) { + cartridgeConfig.setPersistanceMappings(getPersistanceMappingsAsArray(cartridgeDefinitionBean.persistanceMapping)); + } + //IaaS if(cartridgeDefinitionBean.iaasProvider != null & !cartridgeDefinitionBean.iaasProvider.isEmpty()) { cartridgeConfig.setIaasConfigs(getIaasConfigsAsArray(cartridgeDefinitionBean.iaasProvider)); @@ -76,7 +85,27 @@ public class PojoConverter { return cartridgeConfig; } - private static LoadbalancerConfig getLBConfig(LoadBalancerBean loadBalancer) { + private static PersistanceMapping[] getPersistanceMappingsAsArray(List<PersistanceMappingBean> persistanceMappingBeans) { + System.out.println("no of persistance beans " + persistanceMappingBeans.size()); + PersistanceMappingBean[] persistBeanArr = new PersistanceMappingBean[persistanceMappingBeans.size()]; + persistBeanArr = (PersistanceMappingBean[])persistanceMappingBeans.toArray(new PersistanceMappingBean[0]); + + PersistanceMapping[] persistanceMappingArr = new PersistanceMapping[persistBeanArr.length]; + for (int i = 0; i < persistanceMappingArr.length; i++) + { + System.out.println("persistance bean " + persistBeanArr[i].toString()); + PersistanceMapping persistMapping = new PersistanceMapping(); + persistMapping.setSnapshotId(persistBeanArr[i].snapshotId); + persistMapping.setDevice(persistBeanArr[i].device); + persistMapping.setSize(persistBeanArr[i].size); + persistMapping.setRemoveOntermination(persistBeanArr[i].removeOnTermination); + persistanceMappingArr[i] = persistMapping; + } + + return persistanceMappingArr; + } + + private static LoadbalancerConfig getLBConfig(LoadBalancerBean loadBalancer) { LoadbalancerConfig lbConfig = new LoadbalancerConfig(); lbConfig.setType(loadBalancer.type); if (loadBalancer.property != null && !loadBalancer.property.isEmpty()) {
