Repository: stratos Updated Branches: refs/heads/master 98872dbb3 -> e1c34266a
Moving cloud controller configuration parameters from cloud controller context to cloud controller config Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e1c34266 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e1c34266 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e1c34266 Branch: refs/heads/master Commit: e1c34266ab6e332f358ed30bb7a4ac360065d095 Parents: 98872db Author: Imesh Gunaratne <[email protected]> Authored: Sun Nov 30 14:35:01 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Sun Nov 30 14:35:26 2014 +0530 ---------------------------------------------------------------------- .../config/CloudControllerConfig.java | 112 +++++++++++++++++++ .../parser/CloudControllerConfigParser.java | 33 +++--- .../context/CloudControllerContext.java | 82 ++------------ .../deployers/CloudControllerDeployer.java | 15 ++- ...inerClusterContextToKubernetesContainer.java | 5 +- ...tainerClusterContextToKubernetesService.java | 6 +- ...erClusterContextToReplicationController.java | 4 +- .../CloudControllerServiceComponent.java | 8 -- .../CartridgeInstanceDataPublisher.java | 7 +- .../TopologySynchronizerTaskScheduler.java | 6 +- .../messaging/topology/TopologyBuilder.java | 10 +- .../topology/TopologySynchronizerTask.java | 5 +- .../impl/CloudControllerServiceImpl.java | 3 +- .../controller/util/CloudControllerUtil.java | 3 +- .../service/axiom/AxiomXpathParserTest.java | 17 ++- .../balancer/context/LoadBalancerContext.java | 1 + 16 files changed, 178 insertions(+), 139 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/CloudControllerConfig.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/CloudControllerConfig.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/CloudControllerConfig.java new file mode 100644 index 0000000..6af58fb --- /dev/null +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/CloudControllerConfig.java @@ -0,0 +1,112 @@ +/* + * 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.config; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.domain.DataPublisherConfig; +import org.apache.stratos.cloud.controller.domain.IaasProvider; +import org.apache.stratos.cloud.controller.domain.TopologyConfig; + +import java.util.List; + +/** + * Cloud controller config parser parse the cloud-controller.xml and stores + * the configuration in this singleton class to be used in the runtime. + */ +public class CloudControllerConfig { + + private static final Log log = LogFactory.getLog(CloudControllerConfig.class); + + private static volatile CloudControllerConfig instance; + + private List<IaasProvider> iaasProviders; + private boolean enableBAMDataPublisher; + private DataPublisherConfig dataPubConfig; + private boolean enableTopologySync; + private TopologyConfig topologyConfig; + + private CloudControllerConfig() { + } + + public static CloudControllerConfig getInstance() { + if (instance == null) { + synchronized (CloudControllerConfig.class) { + if (instance == null) { + instance = new CloudControllerConfig(); + } + } + } + return instance; + } + + public void setIaasProviders(List<IaasProvider> iaasProviders) { + this.iaasProviders = iaasProviders; + } + + public List<IaasProvider> getIaasProviders() { + return iaasProviders; + } + + public IaasProvider getIaasProvider(String type) { + if(type == null) { + return null; + } + + for (IaasProvider iaasProvider : iaasProviders) { + if(type.equals(iaasProvider.getType())) { + return iaasProvider; + } + } + return null; + } + + public void setEnableBAMDataPublisher(boolean enableBAMDataPublisher) { + this.enableBAMDataPublisher = enableBAMDataPublisher; + } + + public boolean isBAMDataPublisherEnabled() { + return enableBAMDataPublisher; + } + + public void setDataPubConfig(DataPublisherConfig dataPubConfig) { + this.dataPubConfig = dataPubConfig; + } + + public DataPublisherConfig getDataPubConfig() { + return dataPubConfig; + } + + public void setEnableTopologySync(boolean enableTopologySync) { + this.enableTopologySync = enableTopologySync; + } + + public boolean isTopologySyncEnabled() { + return enableTopologySync; + } + + public void setTopologyConfig(TopologyConfig topologyConfig) { + this.topologyConfig = topologyConfig; + } + + public TopologyConfig getTopologyConfig() { + return topologyConfig; + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/parser/CloudControllerConfigParser.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/parser/CloudControllerConfigParser.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/parser/CloudControllerConfigParser.java index f657ef4..8e9ba26 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/parser/CloudControllerConfigParser.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/config/parser/CloudControllerConfigParser.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.stratos.cloud.controller.config.parser; import java.util.ArrayList; @@ -26,7 +27,7 @@ import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMNode; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.cloud.controller.context.CloudControllerContext; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.util.AxiomXpathParserUtil; import org.apache.stratos.cloud.controller.exception.MalformedConfigurationFileException; import org.apache.stratos.cloud.controller.domain.DataPublisherConfig; @@ -61,10 +62,10 @@ public class CloudControllerConfigParser { private static void extractIaasProviders(OMElement elt, List<OMNode> nodeList) { - List<IaasProvider> iaasProviders = CloudControllerContext.getInstance().getIaasProviders(); + List<IaasProvider> iaasProviders = CloudControllerConfig.getInstance().getIaasProviders(); if (iaasProviders == null) { - CloudControllerContext.getInstance() + CloudControllerConfig.getInstance() .setIaasProviders((iaasProviders = new ArrayList<IaasProvider>())); } @@ -86,12 +87,12 @@ public class CloudControllerConfigParser { return; } - CloudControllerContext dataHolder = CloudControllerContext.getInstance(); + CloudControllerConfig config = CloudControllerConfig.getInstance(); // get enable attribute boolean isEnable = Boolean.parseBoolean(element.getAttributeValue(new QName( CloudControllerConstants.ENABLE_ATTR))); - dataHolder.setEnableBAMDataPublisher(isEnable); + config.setEnableBAMDataPublisher(isEnable); if (isEnable) { // get bam server info @@ -100,8 +101,8 @@ public class CloudControllerConfigParser { CloudControllerConstants.BAM_SERVER_ELEMENT); OMElement elt; - DataPublisherConfig config = new DataPublisherConfig(); - dataHolder.setDataPubConfig(config); + DataPublisherConfig dataPublisherConfig = new DataPublisherConfig(); + config.setDataPubConfig(dataPublisherConfig); if (childElement != null) { // set bam user name @@ -109,7 +110,7 @@ public class CloudControllerConfigParser { AxiomXpathParserUtil.getFirstChildElement(childElement, CloudControllerConstants.BAM_SERVER_ADMIN_USERNAME_ELEMENT); if (elt != null) { - config.setBamUsername(elt.getText()); + dataPublisherConfig.setBamUsername(elt.getText()); } // set bam password elt = @@ -123,7 +124,7 @@ public class CloudControllerConfigParser { } if (password != null) { - config.setBamPassword(password); + dataPublisherConfig.setBamPassword(password); } } } @@ -131,7 +132,7 @@ public class CloudControllerConfigParser { // set cron childElement = AxiomXpathParserUtil.getFirstChildElement(element, CloudControllerConstants.CRON_ELEMENT); if (childElement != null) { - config.setDataPublisherCron(childElement.getText()); + dataPublisherConfig.setDataPublisherCron(childElement.getText()); } // set cassandra info @@ -141,13 +142,13 @@ public class CloudControllerConfigParser { // set connection url elt = AxiomXpathParserUtil.getFirstChildElement(childElement, CloudControllerConstants.CONNECTION_URL_ELEMENT); if (elt != null) { - config.setCassandraConnUrl(elt.getText()); + dataPublisherConfig.setCassandraConnUrl(elt.getText()); } // set user name elt = AxiomXpathParserUtil.getFirstChildElement(childElement, CloudControllerConstants.USER_NAME_ELEMENT); if (elt != null) { - config.setCassandraUser(elt.getText()); + dataPublisherConfig.setCassandraUser(elt.getText()); } // set password elt = AxiomXpathParserUtil.getFirstChildElement(childElement, CloudControllerConstants.PASSWORD_ELEMENT); @@ -159,7 +160,7 @@ public class CloudControllerConfigParser { } if (password != null) { - config.setCassandraPassword(password); + dataPublisherConfig.setCassandraPassword(password); } } } @@ -179,9 +180,9 @@ public class CloudControllerConfigParser { Boolean.parseBoolean(element.getAttributeValue(new QName( CloudControllerConstants.ENABLE_ATTR))); - CloudControllerContext dataHolder = CloudControllerContext.getInstance(); + CloudControllerConfig config = CloudControllerConfig.getInstance(); - dataHolder.setEnableTopologySync(isEnable); + config.setEnableTopologySync(isEnable); if (!isEnable) { if (log.isWarnEnabled()) { log.warn("Topology synchronization is disabled!"); @@ -193,7 +194,7 @@ public class CloudControllerConfigParser { // load properties IaasProviderConfigParser.loadProperties(FILE_NAME, element, topologyConfig.getProperties()); - dataHolder.setTopologyConfig(topologyConfig); + config.setTopologyConfig(topologyConfig); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java index c967680..9a1cdc2 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java @@ -42,7 +42,7 @@ public class CloudControllerContext implements Serializable{ private static final long serialVersionUID = -2662307358852779897L; private static final Log log = LogFactory.getLog(CloudControllerContext.class); - private static volatile CloudControllerContext instance; + private static volatile CloudControllerContext instance; /* We keep following maps in order to make the look up time, small. */ @@ -98,32 +98,28 @@ public class CloudControllerContext implements Serializable{ */ private List<ServiceGroup> serviceGroups; - /** - * List of IaaS Providers. - */ - private List<IaasProvider> iaasProviders; - private String serializationDir; - private boolean enableBAMDataPublisher; - private transient DataPublisherConfig dataPubConfig; - private boolean enableTopologySync; - private transient TopologyConfig topologyConfig; - private transient AsyncDataPublisher dataPublisher; private String streamId; private boolean isPublisherRunning; private boolean isTopologySyncRunning; private boolean clustered; + private transient AsyncDataPublisher dataPublisher; + private CloudControllerContext() { + // Initialize cloud controller context clusterIdToMemberContext = new ConcurrentHashMap<String, List<MemberContext>>(); memberIdToContext = new ConcurrentHashMap<String, MemberContext>(); memberIdToScheduledTask = new ConcurrentHashMap<String, ScheduledFuture<?>>(); kubClusterIdToKubClusterContext = new ConcurrentHashMap<String, KubernetesClusterContext>(); clusterIdToContext = new ConcurrentHashMap<String, ClusterContext>(); cartridgeTypeToPartitionIds = new ConcurrentHashMap<String, List<String>>(); - cartridges = new ArrayList<Cartridge>(); serviceGroups = new ArrayList<ServiceGroup>(); + + if (log.isInfoEnabled()) { + log.info("Cloud controller context initialized locally"); + } } public static CloudControllerContext getInstance() { @@ -135,7 +131,7 @@ public class CloudControllerContext implements Serializable{ if (obj instanceof CloudControllerContext) { instance = (CloudControllerContext) obj; } - } + } } if(instance == null) { instance = new CloudControllerContext(); @@ -168,12 +164,10 @@ public class CloudControllerContext implements Serializable{ return cartridge; } } - return null; } public void addCartridge(Cartridge newCartridges) { - cartridges.add(newCartridges); } @@ -203,27 +197,6 @@ public class CloudControllerContext implements Serializable{ this.serviceGroups.removeAll(serviceGroup); } } - - public IaasProvider getIaasProvider(String type) { - if(type == null) { - return null; - } - - for (IaasProvider iaasProvider : iaasProviders) { - if(type.equals(iaasProvider.getType())) { - return iaasProvider; - } - } - return null; - } - - public List<IaasProvider> getIaasProviders() { - return iaasProviders; - } - - public void setIaasProviders(List<IaasProvider> iaasProviders) { - this.iaasProviders = iaasProviders; - } public String getSerializationDir() { return serializationDir; @@ -249,14 +222,6 @@ public class CloudControllerContext implements Serializable{ this.streamId = streamId; } - public boolean getEnableBAMDataPublisher() { - return enableBAMDataPublisher; - } - - public void setEnableBAMDataPublisher(boolean enableBAMDataPublisher) { - this.enableBAMDataPublisher = enableBAMDataPublisher; - } - public boolean isPublisherRunning() { return isPublisherRunning; } @@ -265,14 +230,6 @@ public class CloudControllerContext implements Serializable{ this.isPublisherRunning = isPublisherRunning; } - public boolean getEnableTopologySync() { - return enableTopologySync; - } - - public void setEnableTopologySync(boolean enableTopologySync) { - this.enableTopologySync = enableTopologySync; - } - public boolean isTopologySyncRunning() { return isTopologySyncRunning; } @@ -281,22 +238,6 @@ public class CloudControllerContext implements Serializable{ this.isTopologySyncRunning = isTopologySyncRunning; } - public TopologyConfig getTopologyConfig() { - return topologyConfig; - } - - public void setTopologyConfig(TopologyConfig topologyConfig) { - this.topologyConfig = topologyConfig; - } - - public DataPublisherConfig getDataPubConfig() { - return dataPubConfig; - } - - public void setDataPubConfig(DataPublisherConfig dataPubConfig) { - this.dataPubConfig = dataPubConfig; - } - public void addMemberContext(MemberContext ctxt) { memberIdToContext.put(ctxt.getMemberId(), ctxt); @@ -362,7 +303,6 @@ public class CloudControllerContext implements Serializable{ stopTask(memberIdToScheduledTask.remove(memberId)); return returnedCtxt; - } private void stopTask(ScheduledFuture<?> task) { @@ -474,10 +414,6 @@ public class CloudControllerContext implements Serializable{ this.memberIdToScheduledTask = memberIdToScheduledTask; } - public void setClustered(boolean clustered) { - this.clustered = clustered; - } - public boolean isClustered() { return clustered; } http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CloudControllerDeployer.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CloudControllerDeployer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CloudControllerDeployer.java index 5684ef8..6c299bb 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CloudControllerDeployer.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CloudControllerDeployer.java @@ -25,6 +25,7 @@ import org.apache.axis2.deployment.DeploymentException; import org.apache.axis2.deployment.repository.util.DeploymentFileData; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.apache.stratos.cloud.controller.util.AxiomXpathParserUtil; import org.apache.stratos.cloud.controller.config.parser.CloudControllerConfigParser; @@ -74,7 +75,7 @@ public class CloudControllerDeployer extends AbstractDeployer { // update map fileToIaasProviderListMap.put(deploymentFileData.getAbsolutePath(), new ArrayList<IaasProvider>( - CloudControllerContext.getInstance() + CloudControllerConfig.getInstance() .getIaasProviders())); log.info("Successfully deployed the cloud-controller XML file located at " + @@ -87,23 +88,21 @@ public class CloudControllerDeployer extends AbstractDeployer { if (file.contains(FILE_NAME)) { // reset - CloudControllerContext dataHolder = CloudControllerContext.getInstance(); - dataHolder.setSerializationDir(""); + CloudControllerContext context = CloudControllerContext.getInstance(); + context.setSerializationDir(""); // grab the entry from Map if (fileToIaasProviderListMap.containsKey(file)) { // remove 'em - dataHolder.getIaasProviders().removeAll(fileToIaasProviderListMap.get(file)); + CloudControllerConfig.getInstance().getIaasProviders().removeAll(fileToIaasProviderListMap.get(file)); log.info("Successfully undeployed the cloud-controller XML file specified at " + file); } - dataHolder.setDataPubConfig(null); - dataHolder.setTopologyConfig(null); - + CloudControllerConfig.getInstance().setDataPubConfig(null); + CloudControllerConfig.getInstance().setTopologyConfig(null); } - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java index c33748a..4c80d4f 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java @@ -45,17 +45,16 @@ import com.google.common.base.Function; public class ContainerClusterContextToKubernetesContainer implements Function<ContainerClusterContext, Container> { private static final Log log = LogFactory.getLog(ContainerClusterContextToKubernetesContainer.class); - private CloudControllerContext dataHolder = CloudControllerContext.getInstance(); @Override public Container apply(ContainerClusterContext memberContext) { String clusterId = memberContext.getClusterId(); - ClusterContext clusterContext = dataHolder.getClusterContext(clusterId); + ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); Container container = new Container(); container.setName(getCompatibleName(clusterContext.getHostName())); - Cartridge cartridge = dataHolder.getCartridge(clusterContext.getCartridgeType()); + Cartridge cartridge = CloudControllerContext.getInstance().getCartridge(clusterContext.getCartridgeType()); if (cartridge == null) { log.error("Cannot find a Cartridge of type : " + clusterContext.getCartridgeType()); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java index 282e5af..50f61bd 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java @@ -35,17 +35,15 @@ import com.google.common.base.Function; */ public class ContainerClusterContextToKubernetesService implements Function<ContainerClusterContext, Service> { - private CloudControllerContext dataHolder = CloudControllerContext.getInstance(); - @Override public Service apply(ContainerClusterContext memberContext) { String clusterId = memberContext.getClusterId(); - ClusterContext clusterContext = dataHolder.getClusterContext(clusterId); + ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); String kubernetesClusterId = CloudControllerUtil.getProperty( clusterContext.getProperties(), StratosConstants.KUBERNETES_CLUSTER_ID); - KubernetesClusterContext kubClusterContext = dataHolder + KubernetesClusterContext kubClusterContext = CloudControllerContext.getInstance() .getKubernetesClusterContext(kubernetesClusterId); Service service = new Service(); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java index 39833e2..e01c474 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java @@ -40,13 +40,11 @@ import com.google.common.base.Function; public class ContainerClusterContextToReplicationController implements Function<ContainerClusterContext, ReplicationController> { - private CloudControllerContext dataHolder = CloudControllerContext.getInstance(); - @Override public ReplicationController apply(ContainerClusterContext memberContext) { String clusterId = memberContext.getClusterId(); - ClusterContext clusterContext = dataHolder.getClusterContext(clusterId); + ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); ReplicationController contr = new ReplicationController(); contr.setId(clusterContext.getClusterId()); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java index 8f826e3..9d8a7c5 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java @@ -69,14 +69,6 @@ public class CloudControllerServiceComponent { protected void activate(ComponentContext context) { try { - ClusteringAgent clusteringAgent = ServiceReferenceHolder.getInstance().getAxisConfiguration().getClusteringAgent(); - boolean clusteringEnabled = (clusteringAgent != null); - CloudControllerContext.getInstance().setClustered(clusteringEnabled); - - if(log.isInfoEnabled()) { - log.info(String.format("Cloud controller clustering is %s", (clusteringEnabled ? "enabled" : "disabled"))); - } - applicationTopicReceiver = new ApplicationTopicReceiver(); Thread tApplicationTopicReceiver = new Thread(applicationTopicReceiver); tApplicationTopicReceiver.start(); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/CartridgeInstanceDataPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/CartridgeInstanceDataPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/CartridgeInstanceDataPublisher.java index 9f5b4bc..5f27a7a 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/CartridgeInstanceDataPublisher.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/CartridgeInstanceDataPublisher.java @@ -20,6 +20,7 @@ package org.apache.stratos.cloud.controller.messaging.publisher; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.apache.stratos.cloud.controller.exception.CloudControllerException; import org.apache.stratos.cloud.controller.domain.Cartridge; @@ -56,7 +57,7 @@ public class CartridgeInstanceDataPublisher { String serviceName, String status, NodeMetadata metadata) { - if(!CloudControllerContext.getInstance().getEnableBAMDataPublisher()){ + if(!CloudControllerConfig.getInstance().isBAMDataPublisherEnabled()){ return; } log.debug(CloudControllerConstants.DATA_PUB_TASK_NAME+" cycle started."); @@ -182,8 +183,8 @@ public class CartridgeInstanceDataPublisher { String trustStorePath = serverConfig.getFirstProperty("Security.TrustStore.Location"); String trustStorePassword = serverConfig.getFirstProperty("Security.TrustStore.Password"); String bamServerUrl = serverConfig.getFirstProperty("BamServerURL"); - String adminUsername = CloudControllerContext.getInstance().getDataPubConfig().getBamUsername(); - String adminPassword = CloudControllerContext.getInstance().getDataPubConfig().getBamPassword(); + String adminUsername = CloudControllerConfig.getInstance().getDataPubConfig().getBamUsername(); + String adminPassword = CloudControllerConfig.getInstance().getDataPubConfig().getBamPassword(); System.setProperty("javax.net.ssl.trustStore", trustStorePath); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/TopologySynchronizerTaskScheduler.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/TopologySynchronizerTaskScheduler.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/TopologySynchronizerTaskScheduler.java index 7b473f8..ccadf58 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/TopologySynchronizerTaskScheduler.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/publisher/TopologySynchronizerTaskScheduler.java @@ -23,6 +23,7 @@ import java.util.HashMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.apache.stratos.cloud.controller.messaging.topology.TopologySynchronizerTask; import org.apache.stratos.cloud.controller.util.CloudControllerConstants; @@ -39,8 +40,6 @@ public class TopologySynchronizerTaskScheduler { private static final Log log = LogFactory.getLog(TopologySynchronizerTaskScheduler.class); - private static final CloudControllerContext dataHolder = CloudControllerContext.getInstance(); - public static void schedule(TaskService taskService) { TaskManager taskManager = null; try { @@ -51,7 +50,8 @@ public class TopologySynchronizerTaskScheduler { // Register task taskManager = taskService.getTaskManager(CloudControllerConstants.TOPOLOGY_SYNC_TASK_TYPE); - String cronProp = dataHolder.getTopologyConfig().getProperty(CloudControllerConstants.CRON_PROPERTY); + String cronProp = CloudControllerConfig.getInstance(). + getTopologyConfig().getProperty(CloudControllerConstants.CRON_PROPERTY); String cron = cronProp != null ? cronProp :CloudControllerConstants.TOPOLOGY_SYNC_CRON ; TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo(cron); TaskInfo taskInfo = new TaskInfo(CloudControllerConstants.TOPOLOGY_SYNC_TASK_NAME, http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java index 7dd2b22..739469b 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java @@ -183,7 +183,7 @@ public class TopologyBuilder { TopologyManager.acquireWriteLock(); List<Cluster> removedClusters = new ArrayList<Cluster>(); - CloudControllerContext dataHolder = CloudControllerContext.getInstance(); + CloudControllerContext context = CloudControllerContext.getInstance(); try { Topology topology = TopologyManager.getTopology(); @@ -197,12 +197,12 @@ public class TopologyBuilder { log.warn("Service " + aClusterData.getServiceType() + " not found, unable to remove Cluster " + aClusterData.getClusterId()); } // remove runtime data - dataHolder.removeClusterContext(aClusterData.getClusterId()); + context.removeClusterContext(aClusterData.getClusterId()); log.info("Removed application [ " + appId + " ]'s Cluster [ " + aClusterData.getClusterId() + " ] from the topology"); } // persist runtime data changes - persist(dataHolder); + persist(context); } else { log.info("No cluster data found for application " + appId + " to remove"); } @@ -220,10 +220,10 @@ public class TopologyBuilder { /** * Persist data in registry. */ - private static void persist(CloudControllerContext dataHolder) { + private static void persist(CloudControllerContext context) { try { RegistryManager.getInstance().persist( - dataHolder); + context); } catch (RegistryException e) { String msg = "Failed to persist the Cloud Controller data in registry. Further, transaction roll back also failed."; http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologySynchronizerTask.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologySynchronizerTask.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologySynchronizerTask.java index 733214f..94843bc 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologySynchronizerTask.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologySynchronizerTask.java @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.wso2.carbon.ntask.core.Task; @@ -36,7 +37,7 @@ public class TopologySynchronizerTask implements Task{ if(CloudControllerContext.getInstance().isTopologySyncRunning() || // this is a temporary fix to avoid task execution - limitation with ntask - (!CloudControllerContext.getInstance().getEnableTopologySync())){ + (!CloudControllerConfig.getInstance().isTopologySyncEnabled())){ if(log.isWarnEnabled()) { log.warn("Topology synchronization is disabled."); } @@ -53,7 +54,7 @@ public class TopologySynchronizerTask implements Task{ public void init() { // this is a temporary fix to avoid task execution - limitation with ntask - if(!CloudControllerContext.getInstance().getEnableTopologySync()){ + if(!CloudControllerConfig.getInstance().isTopologySyncEnabled()){ if(log.isWarnEnabled()) { log.warn("Topology synchronization is disabled."); } http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java index abec364..d1ef730 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java @@ -28,6 +28,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable; import org.apache.stratos.cloud.controller.concurrent.ScheduledThreadExecutor; import org.apache.stratos.cloud.controller.concurrent.ThreadExecutor; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.apache.stratos.cloud.controller.domain.*; import org.apache.stratos.cloud.controller.domain.Cartridge; @@ -1533,7 +1534,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { handleNullObject(partition, "Partition validation failed. Partition is null."); String provider = partition.getProvider(); handleNullObject(provider, "Partition [" + partition.getId() + "] validation failed. Partition provider is null."); - IaasProvider iaasProvider = dataHolder.getIaasProvider(provider); + IaasProvider iaasProvider = CloudControllerConfig.getInstance().getIaasProvider(provider); if (iaasProvider == null) { String msg = http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/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 5360545..8b88301 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 @@ -21,6 +21,7 @@ package org.apache.stratos.cloud.controller.util; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.context.CloudControllerContext; import org.apache.stratos.cloud.controller.domain.*; import org.apache.stratos.cloud.controller.domain.Partition; @@ -87,7 +88,7 @@ public class CloudControllerUtil { // populate LB config cartridge.setLbConfig(config.getLbConfig()); - List<IaasProvider> iaases = CloudControllerContext.getInstance().getIaasProviders(); + List<IaasProvider> iaases = CloudControllerConfig.getInstance().getIaasProviders(); // populate IaaSes IaasConfig[] iaasConfigs = config.getIaasConfigs(); http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/AxiomXpathParserTest.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/AxiomXpathParserTest.java b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/AxiomXpathParserTest.java index 44c0fc7..f2eded6 100644 --- a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/AxiomXpathParserTest.java +++ b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/AxiomXpathParserTest.java @@ -19,12 +19,11 @@ package org.apache.cartridge.autoscaler.service.axiom; import junit.framework.TestCase; - import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMNode; -import org.apache.stratos.cloud.controller.context.CloudControllerContext; -import org.apache.stratos.cloud.controller.util.AxiomXpathParserUtil; +import org.apache.stratos.cloud.controller.config.CloudControllerConfig; import org.apache.stratos.cloud.controller.config.parser.CloudControllerConfigParser; +import org.apache.stratos.cloud.controller.util.AxiomXpathParserUtil; import java.io.File; import java.util.List; @@ -47,18 +46,18 @@ public class AxiomXpathParserTest extends TestCase { public void testGetMatchingNodes(){ List<OMNode> list = AxiomXpathParserUtil.getMatchingNodes("/cloudController/iaasProviders/iaasProvider/provider", docElt); assertEquals(1, list.size()); - assertEquals(1, CloudControllerContext.getInstance().getIaasProviders().size()); + assertEquals(1, CloudControllerConfig.getInstance().getIaasProviders().size()); } public void testDataPublisherConfig() { - assertEquals(true, CloudControllerContext.getInstance().getEnableBAMDataPublisher()); - assertEquals("nirmal", CloudControllerContext.getInstance().getDataPubConfig().getBamUsername()); - assertEquals("nirmal", CloudControllerContext.getInstance().getDataPubConfig().getBamPassword()); + assertEquals(true, CloudControllerConfig.getInstance().isBAMDataPublisherEnabled()); + assertEquals("nirmal", CloudControllerConfig.getInstance().getDataPubConfig().getBamUsername()); + assertEquals("nirmal", CloudControllerConfig.getInstance().getDataPubConfig().getBamPassword()); } public void testTopologySynchParser() { - assertNotNull(CloudControllerContext.getInstance().getTopologyConfig()); - assertEquals("1 * * * * ? *", CloudControllerContext.getInstance().getTopologyConfig().getProperty("cron")); + assertNotNull(CloudControllerConfig.getInstance().getTopologyConfig()); + assertEquals("1 * * * * ? *", CloudControllerConfig.getInstance().getTopologyConfig().getProperty("cron")); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/e1c34266/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/context/LoadBalancerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/context/LoadBalancerContext.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/context/LoadBalancerContext.java index a3a694c..4638754 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/context/LoadBalancerContext.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/context/LoadBalancerContext.java @@ -29,6 +29,7 @@ import org.apache.stratos.load.balancer.context.map.*; public class LoadBalancerContext { private static final Log log = LogFactory.getLog(LoadBalancerContext.class); + private static volatile LoadBalancerContext instance; // Following map is updated by the service component.
