Updated Branches: refs/heads/master 8a76a55f3 -> 4c027278f
MT Service deployment for LB Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/192c8671 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/192c8671 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/192c8671 Branch: refs/heads/master Commit: 192c86712ce73b3f191ebc396b49b64072318ad0 Parents: 70aa62e Author: Isuru <[email protected]> Authored: Fri Jan 10 11:31:34 2014 +0530 Committer: Isuru <[email protected]> Committed: Fri Jan 10 11:31:34 2014 +0530 ---------------------------------------------------------------------- .../stratos/manager/deploy/service/Service.java | 37 ++++++++++- .../service/ServiceDeploymentManager.java | 65 ++++++++++---------- .../service/multitenant/MultiTenantService.java | 2 + .../multitenant/lb/MultiTenantLBService.java | 54 ++++++++++++++++ 4 files changed, 126 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/192c8671/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java index 6121931..2dc29bc 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/Service.java @@ -19,11 +19,15 @@ package org.apache.stratos.manager.deploy.service; +import org.apache.stratos.cloud.controller.pojo.Property; import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.UnregisteredCartridgeException; +import org.apache.stratos.manager.payload.BasicPayloadData; import org.apache.stratos.manager.payload.PayloadData; +import org.apache.stratos.manager.payload.PayloadFactory; import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.manager.utils.CartridgeConstants; import java.io.Serializable; @@ -52,7 +56,38 @@ public abstract class Service implements Serializable { this.subscriptionKey = CartridgeSubscriptionUtils.generateSubscriptionKey(); } - public abstract void deploy () throws ADCException, UnregisteredCartridgeException; + public void deploy () throws ADCException, UnregisteredCartridgeException { + + //generate the cluster ID (domain)for the service + setClusterId(type + "." + cartridgeInfo.getHostName() + ".domain"); + //host name is the hostname defined in cartridge definition + setHostName(cartridgeInfo.getHostName()); + + //Create payload + BasicPayloadData basicPayloadData = CartridgeSubscriptionUtils.createBasicPayload(this); + //populate + basicPayloadData.populatePayload(); + PayloadData payloadData = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(), + cartridgeInfo.getType(), basicPayloadData); + + // get the payload parameters defined in the cartridge definition file for this cartridge type + if (cartridgeInfo.getProperties() != null && cartridgeInfo.getProperties().length != 0) { + + for (Property property : cartridgeInfo.getProperties()) { + // check if a property is related to the payload. Currently this is done by checking if the + // property name starts with 'payload_parameter.' suffix. If so the payload param name will + // be taken as the substring from the index of '.' to the end of the property name. + if (property.getName() + .startsWith(CartridgeConstants.CUSTOM_PAYLOAD_PARAM_NAME_PREFIX)) { + String payloadParamName = property.getName(); + payloadData.add(payloadParamName.substring(payloadParamName.indexOf(".") + 1), property.getValue()); + } + } + } + + //set PayloadData instance + setPayloadData(payloadData); + } public abstract void undeploy (String clusterId) throws ADCException; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/192c8671/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java index 4610615..195b0cf 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/ServiceDeploymentManager.java @@ -19,32 +19,26 @@ package org.apache.stratos.manager.deploy.service; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.cloud.controller.pojo.LoadbalancerConfig; +import org.apache.stratos.cloud.controller.pojo.Properties; +import org.apache.stratos.cloud.controller.pojo.Property; import org.apache.stratos.manager.client.AutoscalerServiceClient; import org.apache.stratos.manager.client.CloudControllerServiceClient; +import org.apache.stratos.manager.deploy.service.multitenant.lb.MultiTenantLBService; import org.apache.stratos.manager.deploy.service.multitenant.MultiTenantService; import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.UnregisteredCartridgeException; import org.apache.stratos.manager.manager.CartridgeSubscriptionManager; -import org.apache.stratos.manager.payload.BasicPayloadData; -import org.apache.stratos.manager.payload.PayloadData; -import org.apache.stratos.manager.payload.PayloadFactory; -import org.apache.stratos.manager.subscription.CartridgeSubscription; -import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils; -import org.apache.stratos.manager.utils.CartridgeConstants; import org.apache.stratos.manager.utils.PersistenceManager; -import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; -import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; -import org.apache.stratos.cloud.controller.pojo.LoadbalancerConfig; -import org.apache.stratos.cloud.controller.pojo.Properties; -import org.apache.stratos.cloud.controller.pojo.Property; import org.apache.stratos.messaging.util.Constants; +import java.util.ArrayList; +import java.util.List; + public class ServiceDeploymentManager { private static Log log = LogFactory.getLog(ServiceDeploymentManager.class); @@ -91,6 +85,8 @@ public class ServiceDeploymentManager { } } else { + Service lbService; + CartridgeInfo lbCartridgeInfo; String lbCartridgeType = lbConfig.getType(); try { @@ -168,15 +164,20 @@ public class ServiceDeploymentManager { if (!AutoscalerServiceClient.getServiceClient().checkDefaultLBExistenceAgainstPolicy(deploymentPolicyName)) { // if lb cluster doesn't exist - String lbAlias = "lb" + new Random().nextInt(); lbCartridgeInfo.addProperties(property); - subscribeToLb(lbCartridgeType, + /*subscribeToLb(lbCartridgeType, lbAlias, lbCartridgeInfo.getDefaultAutoscalingPolicy(), deploymentPolicyName, tenantId, userName, tenantDomain, - lbCartridgeInfo.getProperties()); + lbCartridgeInfo.getProperties());*/ + lbService = new MultiTenantLBService(lbCartridgeType, + lbCartridgeInfo.getDefaultAutoscalingPolicy(), + deploymentPolicyName, tenantId, + lbCartridgeInfo, + tenantRange); + lbService.deploy(); } } } @@ -210,19 +211,21 @@ public class ServiceDeploymentManager { if (!AutoscalerServiceClient.getServiceClient().checkServiceLBExistenceAgainstPolicy(type, deploymentPolicyName)) { - // if lb cluster doesn't exist - String lbAlias = - "lb" + type + - new Random().nextInt(); lbCartridgeInfo.addProperties(property); - subscribeToLb(lbCartridgeType, + /*subscribeToLb(lbCartridgeType, lbAlias, lbCartridgeInfo.getDefaultAutoscalingPolicy(), deploymentPolicyName, tenantId, userName, tenantDomain, - lbCartridgeInfo.getProperties()); + lbCartridgeInfo.getProperties());*/ + lbService = new MultiTenantLBService(lbCartridgeType, + lbCartridgeInfo.getDefaultAutoscalingPolicy(), + deploymentPolicyName, tenantId, + lbCartridgeInfo, + tenantRange); + lbService.deploy(); } } } @@ -240,13 +243,13 @@ public class ServiceDeploymentManager { } } } - - - + + + Service service = new MultiTenantService(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange); - //generate the cluster ID (domain)for the service + /*//generate the cluster ID (domain)for the service service.setClusterId(type + "." + cartridgeInfo.getHostName() + ".domain"); //host name is the hostname defined in cartridge definition service.setHostName(cartridgeInfo.getHostName()); @@ -274,7 +277,7 @@ public class ServiceDeploymentManager { } //set PayloadData instance - service.setPayloadData(payloadData); + service.setPayloadData(payloadData);*/ //deploy the service service.deploy(); @@ -301,7 +304,7 @@ public class ServiceDeploymentManager { } - private void subscribeToLb(String cartridgeType, String lbAlias, + /*private void subscribeToLb(String cartridgeType, String lbAlias, String defaultAutoscalingPolicy, String deploymentPolicy, int tenantId, String userName, String tenantDomain, Property[] props) throws ADCException { @@ -326,5 +329,5 @@ public class ServiceDeploymentManager { log.error(msg, e); throw new ADCException(msg, e); } - } + }*/ } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/192c8671/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/MultiTenantService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/MultiTenantService.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/MultiTenantService.java index 629f34a..65cbbb0 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/MultiTenantService.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/MultiTenantService.java @@ -40,6 +40,8 @@ public class MultiTenantService extends Service { @Override public void deploy() throws ADCException, UnregisteredCartridgeException { + super.deploy(); + //register the service ApplicationManagementUtil.registerService(getType(), getClusterId(), CartridgeConstants.DEFAULT_SUBDOMAIN, getPayloadData().getCompletePayloadData(), getTenantRange(), getHostName(), getAutoscalingPolicyName(), http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/192c8671/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java new file mode 100644 index 0000000..34b140c --- /dev/null +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/deploy/service/multitenant/lb/MultiTenantLBService.java @@ -0,0 +1,54 @@ +/* + * 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.manager.deploy.service.multitenant.lb; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.manager.deploy.service.Service; +import org.apache.stratos.manager.exception.ADCException; +import org.apache.stratos.manager.exception.UnregisteredCartridgeException; +import org.apache.stratos.manager.utils.ApplicationManagementUtil; +import org.apache.stratos.manager.utils.CartridgeConstants; + +public class MultiTenantLBService extends Service { + + private static Log log = LogFactory.getLog(MultiTenantLBService.class); + + public MultiTenantLBService(String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo, String tenantRange) { + super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange); + } + + @Override + public void deploy() throws ADCException, UnregisteredCartridgeException { + + super.deploy(); + + //register the service + ApplicationManagementUtil.registerService(getType(), getClusterId(), CartridgeConstants.DEFAULT_SUBDOMAIN, + getPayloadData().getCompletePayloadData(), getTenantRange(), getHostName(), getAutoscalingPolicyName(), + getDeploymentPolicyName(), null); + } + + @Override + public void undeploy(String clusterId) throws ADCException { + //To change body of implemented methods use File | Settings | File Templates. + } +}
