You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/03/05 14:04:44 UTC
[2/2] stratos git commit: Fixing issue of reading cluster ids from
application signup added event
Fixing issue of reading cluster ids from application signup added event
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7c4cd8cc
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7c4cd8cc
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7c4cd8cc
Branch: refs/heads/master
Commit: 7c4cd8cc53fb2c5f6fdfd903da2fd4a5fd336916
Parents: bf688e4
Author: Imesh Gunaratne <im...@apache.org>
Authored: Thu Mar 5 18:34:07 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Thu Mar 5 18:34:07 2015 +0530
----------------------------------------------------------------------
.../services/impl/AutoscalerServiceImpl.java | 49 +-
.../load/balancer/common/domain/Cluster.java | 9 +-
...cerCommonApplicationSignUpEventReceiver.java | 75 ++-
...LoadBalancerCommonTopologyEventReceiver.java | 35 +-
.../balancer/endpoint/RequestDelegator.java | 9 +-
.../TenantAwareLoadBalanceEndpoint.java | 4 +-
.../components/ApplicationSignUpHandler.java | 18 +-
.../application/signup/ApplicationSignUp.java | 7 +-
.../ApplicationSignUpAddedMessageProcessor.java | 6 +-
.../rest/endpoint/api/StratosApiV41Utils.java | 16 +
.../main/resources/StratosManagerService.wsdl | 638 +++++++++----------
11 files changed, 457 insertions(+), 409 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 7f21c68..9c52bc5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -18,26 +18,13 @@
*/
package org.apache.stratos.autoscaler.services.impl;
-import java.rmi.RemoteException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.applications.ApplicationHolder;
import org.apache.stratos.autoscaler.applications.parser.ApplicationParser;
import org.apache.stratos.autoscaler.applications.parser.DefaultApplicationParser;
-import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext;
-import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
-import org.apache.stratos.autoscaler.applications.pojo.ArtifactRepositoryContext;
-import org.apache.stratos.autoscaler.applications.pojo.CartridgeContext;
-import org.apache.stratos.autoscaler.applications.pojo.ComponentContext;
-import org.apache.stratos.autoscaler.applications.pojo.GroupContext;
-import org.apache.stratos.autoscaler.applications.pojo.SubscribableInfoContext;
+import org.apache.stratos.autoscaler.applications.pojo.*;
import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
@@ -70,6 +57,13 @@ import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient;
import org.apache.stratos.metadata.client.exception.MetaDataServiceClientException;
import org.wso2.carbon.registry.api.RegistryException;
+import java.rmi.RemoteException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
/**
* Auto Scaler Service API is responsible getting Partitions and Policies.
*/
@@ -194,7 +188,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
if(!applicationContext.isMultiTenant()) {
// Add application signup for single tenant applications
- addApplicationSignUp(applicationContext, application.getKey());
+ addApplicationSignUp(applicationContext, application.getKey(), findApplicationClusterIds(application));
}
applicationContext.setStatus(ApplicationContext.STATUS_DEPLOYED);
AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
@@ -235,7 +229,28 @@ public class AutoscalerServiceImpl implements AutoscalerService {
}
}
- private void addApplicationSignUp(ApplicationContext applicationContext, String applicationKey) {
+ /**
+ * Find application cluster ids.
+ * @param application
+ * @return
+ */
+ private List<String> findApplicationClusterIds(Application application) {
+ List<String> clusterIds = new ArrayList<String>();
+ for(ClusterDataHolder clusterDataHolder : application.getClusterDataRecursively()) {
+ clusterIds.add(clusterDataHolder.getClusterId());
+ }
+ return clusterIds;
+ }
+
+ /**
+ * Add application signup.
+ * @param applicationContext
+ * @param applicationKey
+ * @param clusterIds
+ */
+ private void addApplicationSignUp(ApplicationContext applicationContext, String applicationKey,
+ List<String> clusterIds) {
+
try {
if(log.isInfoEnabled()) {
log.info(String.format("Adding application signup: [application-id] %s",
@@ -247,6 +262,8 @@ public class AutoscalerServiceImpl implements AutoscalerService {
ApplicationSignUp applicationSignUp = new ApplicationSignUp();
applicationSignUp.setApplicationId(applicationContext.getApplicationId());
applicationSignUp.setTenantId(applicationContext.getTenantId());
+ String[] clusterIdsArray = clusterIds.toArray(new String[clusterIds.size()]);
+ applicationSignUp.setClusterIds(clusterIdsArray);
List<ArtifactRepository> artifactRepositoryList = new ArrayList<ArtifactRepository>();
CartridgeContext[] cartridgeContexts = components.getCartridgeContexts();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/domain/Cluster.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/domain/Cluster.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/domain/Cluster.java
index d2f9c4e..1f4bee9 100644
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/domain/Cluster.java
+++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/domain/Cluster.java
@@ -72,10 +72,6 @@ public class Cluster {
public void addMember(Member member) {
memberMap.put(member.getMemberId(), member);
- if(log.isInfoEnabled()) {
- log.info(String.format("Member added to cluster: [cluster] %s [member] %s [hostname] %s [ports] %s",
- clusterId, member.getMemberId(), member.getHostName(), member.getPorts()));
- }
}
public void removeMember(String memberId) {
@@ -84,13 +80,10 @@ public class Cluster {
if(log.isWarnEnabled()) {
log.warn(String.format("Could not remove member, member not found: [member] %s", memberId));
}
+ return;
}
memberMap.remove(memberId);
- if(log.isInfoEnabled()) {
- log.info(String.format("Member removed from cluster: [cluster] %s [member] %s [hostname] %s",
- clusterId, member.getMemberId(), member.getHostName()));
- }
}
public Member getMember(String memberId) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonApplicationSignUpEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonApplicationSignUpEventReceiver.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonApplicationSignUpEventReceiver.java
index eb9d799..d5819dc 100644
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonApplicationSignUpEventReceiver.java
+++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonApplicationSignUpEventReceiver.java
@@ -54,33 +54,44 @@ public class LoadBalancerCommonApplicationSignUpEventReceiver extends Applicatio
private void addEventListeners() {
addEventListener(new CompleteApplicationSignUpsEventListener() {
+ private boolean initialized = false;
+
@Override
protected void onEvent(Event event) {
- if (log.isDebugEnabled()) {
- log.debug("Complete application signup event received");
- }
-
- CompleteApplicationSignUpsEvent completeApplicationSignUpsEvent = (CompleteApplicationSignUpsEvent) event;
- for (ApplicationSignUp applicationSignUp : completeApplicationSignUpsEvent.getApplicationSignUps()) {
+ try {
+ if (initialized) {
+ return;
+ }
- // Add tenant signups
- for (String clusterId : applicationSignUp.getClusterIds()) {
- topologyProvider.addTenantSignUp(clusterId, applicationSignUp.getTenantId());
+ if (log.isDebugEnabled()) {
+ log.debug("Complete application signup event received");
}
- // Add domain mappings
- if (applicationSignUp.getDomainMappings() != null) {
- for (DomainMapping domainMapping : applicationSignUp.getDomainMappings()) {
- if (domainMapping != null) {
- Cluster cluster = topologyProvider.getClusterByClusterId(domainMapping.getClusterId());
- if (cluster != null) {
- cluster.addHostName(domainMapping.getDomainName());
- log.info(String.format("Domain mapping added: [cluster] %s [domain] %s",
- cluster.getClusterId(), domainMapping.getDomainName()));
+ CompleteApplicationSignUpsEvent completeApplicationSignUpsEvent = (CompleteApplicationSignUpsEvent) event;
+ for (ApplicationSignUp applicationSignUp : completeApplicationSignUpsEvent.getApplicationSignUps()) {
+
+ // Add tenant signups
+ for (String clusterId : applicationSignUp.getClusterIds()) {
+ topologyProvider.addTenantSignUp(clusterId, applicationSignUp.getTenantId());
+ }
+
+ // Add domain mappings
+ if (applicationSignUp.getDomainMappings() != null) {
+ for (DomainMapping domainMapping : applicationSignUp.getDomainMappings()) {
+ if (domainMapping != null) {
+ Cluster cluster = topologyProvider.getClusterByClusterId(domainMapping.getClusterId());
+ if (cluster != null) {
+ cluster.addHostName(domainMapping.getDomainName());
+ log.info(String.format("Domain mapping added: [cluster] %s [domain] %s",
+ cluster.getClusterId(), domainMapping.getDomainName()));
+ }
}
}
}
}
+ initialized = true;
+ } catch (Exception e) {
+ log.error("Could not process complete application signup event", e);
}
}
});
@@ -88,9 +99,13 @@ public class LoadBalancerCommonApplicationSignUpEventReceiver extends Applicatio
addEventListener(new ApplicationSignUpAddedEventListener() {
@Override
protected void onEvent(Event event) {
- ApplicationSignUpAddedEvent applicationSignUpAddedEvent = (ApplicationSignUpAddedEvent) event;
- for (String clusterId : applicationSignUpAddedEvent.getClusterIds()) {
- topologyProvider.addTenantSignUp(clusterId, applicationSignUpAddedEvent.getTenantId());
+ try {
+ ApplicationSignUpAddedEvent applicationSignUpAddedEvent = (ApplicationSignUpAddedEvent) event;
+ for (String clusterId : applicationSignUpAddedEvent.getClusterIds()) {
+ topologyProvider.addTenantSignUp(clusterId, applicationSignUpAddedEvent.getTenantId());
+ }
+ } catch (Exception e) {
+ log.error("Could not process application signup added event", e);
}
}
});
@@ -98,14 +113,18 @@ public class LoadBalancerCommonApplicationSignUpEventReceiver extends Applicatio
addEventListener(new ApplicationSignUpRemovedEventListener() {
@Override
protected void onEvent(Event event) {
- ApplicationSignUpRemovedEvent applicationSignUpRemovedEvent = (ApplicationSignUpRemovedEvent) event;
- String applicationId = applicationSignUpRemovedEvent.getApplicationId();
+ try {
+ ApplicationSignUpRemovedEvent applicationSignUpRemovedEvent = (ApplicationSignUpRemovedEvent) event;
+ String applicationId = applicationSignUpRemovedEvent.getApplicationId();
- Application application = ApplicationManager.getApplications().getApplication(applicationId);
- if(application != null) {
- for(ClusterDataHolder clusterDataHolder : application.getClusterDataMap().values())
- topologyProvider.removeTenantSignUp(clusterDataHolder.getClusterId(),
- applicationSignUpRemovedEvent.getTenantId());
+ Application application = ApplicationManager.getApplications().getApplication(applicationId);
+ if (application != null) {
+ for (ClusterDataHolder clusterDataHolder : application.getClusterDataMap().values())
+ topologyProvider.removeTenantSignUp(clusterDataHolder.getClusterId(),
+ applicationSignUpRemovedEvent.getTenantId());
+ }
+ } catch (Exception e) {
+ log.error("Could not process application signup removed event", e);
}
}
});
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonTopologyEventReceiver.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonTopologyEventReceiver.java
index 1a4a4b7..17d02ab 100644
--- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonTopologyEventReceiver.java
+++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonTopologyEventReceiver.java
@@ -58,24 +58,26 @@ public class LoadBalancerCommonTopologyEventReceiver extends TopologyEventReceiv
@Override
protected void onEvent(Event event) {
- if (!initialized) {
- try {
- TopologyManager.acquireReadLock();
- for (Service service : TopologyManager.getTopology().getServices()) {
- for (Cluster cluster : service.getClusters()) {
- for (Member member : cluster.getMembers()) {
- if (member.getStatus() == MemberStatus.Active) {
- addMember(cluster.getServiceName(), member.getClusterId(), member.getMemberId());
- }
+ if (initialized) {
+ return;
+ }
+
+ try {
+ TopologyManager.acquireReadLock();
+ for (Service service : TopologyManager.getTopology().getServices()) {
+ for (Cluster cluster : service.getClusters()) {
+ for (Member member : cluster.getMembers()) {
+ if (member.getStatus() == MemberStatus.Active) {
+ addMember(cluster.getServiceName(), member.getClusterId(), member.getMemberId());
}
}
}
- initialized = true;
- } catch (Exception e) {
- log.error("Error processing event", e);
- } finally {
- TopologyManager.releaseReadLock();
}
+ initialized = true;
+ } catch (Exception e) {
+ log.error("Error processing complete topology event", e);
+ } finally {
+ TopologyManager.releaseReadLock();
}
}
});
@@ -367,6 +369,11 @@ public class LoadBalancerCommonTopologyEventReceiver extends TopologyEventReceiv
new org.apache.stratos.load.balancer.common.domain.Member(messagingMember.getServiceName(),
messagingMember.getClusterId(), messagingMember.getMemberId(),
hostName);
+ if(messagingMember.getPorts() != null) {
+ for(Port port : messagingMember.getPorts()) {
+ member.addPort(transformPort(port));
+ }
+ }
return member;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/RequestDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/RequestDelegator.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/RequestDelegator.java
index 80b85d8..636955d 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/RequestDelegator.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/RequestDelegator.java
@@ -25,6 +25,7 @@ import org.apache.stratos.load.balancer.algorithm.LoadBalanceAlgorithm;
import org.apache.stratos.load.balancer.common.topology.TopologyProvider;
import org.apache.stratos.load.balancer.common.domain.Cluster;
import org.apache.stratos.load.balancer.common.domain.Member;
+import org.apache.stratos.load.balancer.conf.LoadBalancerConfiguration;
import org.apache.stratos.load.balancer.context.AlgorithmContext;
import org.apache.stratos.load.balancer.context.ClusterContext;
import org.apache.stratos.load.balancer.context.LoadBalancerContext;
@@ -40,11 +41,9 @@ public class RequestDelegator {
private static final Log log = LogFactory.getLog(RequestDelegator.class);
private LoadBalanceAlgorithm algorithm;
- private TopologyProvider topologyProvider;
- public RequestDelegator(LoadBalanceAlgorithm algorithm, TopologyProvider topologyProvider) {
+ public RequestDelegator(LoadBalanceAlgorithm algorithm) {
this.algorithm = algorithm;
- this.topologyProvider = topologyProvider;
}
/**
@@ -59,6 +58,7 @@ public class RequestDelegator {
long startTime = System.currentTimeMillis();
+ TopologyProvider topologyProvider = LoadBalancerConfiguration.getInstance().getTopologyProvider();
Cluster cluster = topologyProvider.getClusterByHostName(hostName);
if (cluster != null) {
if (log.isDebugEnabled()) {
@@ -92,6 +92,7 @@ public class RequestDelegator {
long startTime = System.currentTimeMillis();
// Find cluster from host name and tenant id
+ TopologyProvider topologyProvider = LoadBalancerConfiguration.getInstance().getTopologyProvider();
Cluster cluster = topologyProvider.getClusterByHostName(hostName, tenantId);
if (cluster != null) {
Member member = findNextMemberInCluster(cluster);
@@ -147,11 +148,13 @@ public class RequestDelegator {
if (hostName == null)
return false;
+ TopologyProvider topologyProvider = LoadBalancerConfiguration.getInstance().getTopologyProvider();
boolean valid = topologyProvider.clusterExistsByHostName(hostName);
return valid;
}
public Cluster getCluster(String hostName) {
+ TopologyProvider topologyProvider = LoadBalancerConfiguration.getInstance().getTopologyProvider();
return topologyProvider.getClusterByHostName(hostName);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
index 9c4a66c..f203f5c 100644
--- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
+++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java
@@ -28,7 +28,6 @@ import org.apache.stratos.load.balancer.algorithm.LoadBalanceAlgorithmFactory;
import org.apache.stratos.load.balancer.common.domain.Cluster;
import org.apache.stratos.load.balancer.common.domain.Member;
import org.apache.stratos.load.balancer.common.domain.Port;
-import org.apache.stratos.load.balancer.common.topology.TopologyProvider;
import org.apache.stratos.load.balancer.conf.LoadBalancerConfiguration;
import org.apache.stratos.load.balancer.conf.domain.TenantIdentifier;
import org.apache.stratos.load.balancer.context.LoadBalancerContext;
@@ -85,8 +84,7 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
super.init(synapseEnvironment);
LoadBalanceAlgorithm algorithm = LoadBalanceAlgorithmFactory.createAlgorithm(algorithmClassName);
- TopologyProvider topologyProvider = LoadBalancerConfiguration.getInstance().getTopologyProvider();
- requestDelegator = new RequestDelegator(algorithm, topologyProvider);
+ requestDelegator = new RequestDelegator(algorithm);
synapseEnvironment.getSynapseConfiguration().setProperty(SynapseConstants.PROP_SAL_ENDPOINT_DEFAULT_SESSION_TIMEOUT, String.valueOf(sessionTimeout));
setDispatcher(new HttpSessionDispatcher());
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/ApplicationSignUpHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/ApplicationSignUpHandler.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/ApplicationSignUpHandler.java
index 5e57b6d..84c3c64 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/ApplicationSignUpHandler.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/ApplicationSignUpHandler.java
@@ -22,15 +22,11 @@ package org.apache.stratos.manager.components;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.util.CommonUtil;
+import org.apache.stratos.manager.exception.ApplicationSignUpException;
import org.apache.stratos.manager.messaging.publisher.ApplicationSignUpEventPublisher;
-import org.apache.stratos.messaging.domain.application.ClusterDataHolder;
+import org.apache.stratos.manager.registry.RegistryManager;
import org.apache.stratos.messaging.domain.application.signup.ApplicationSignUp;
import org.apache.stratos.messaging.domain.application.signup.ArtifactRepository;
-import org.apache.stratos.manager.exception.ApplicationSignUpException;
-import org.apache.stratos.manager.registry.RegistryManager;
-import org.apache.stratos.messaging.domain.application.Application;
-import org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
import java.util.ArrayList;
import java.util.List;
@@ -61,7 +57,13 @@ public class ApplicationSignUpHandler {
String applicationId = applicationSignUp.getApplicationId();
int tenantId = applicationSignUp.getTenantId();
- List<String> clusterIds = applicationSignUp.getClusterIds();
+ String[] clusterIdArray = applicationSignUp.getClusterIds();
+ List<String> clusterIdList = new ArrayList<String>();
+ if(clusterIdArray != null) {
+ for (String clusterId : clusterIdArray) {
+ clusterIdList.add(clusterId);
+ }
+ }
try {
if (log.isInfoEnabled()) {
@@ -78,7 +80,7 @@ public class ApplicationSignUpHandler {
String resourcePath = prepareApplicationSignupResourcePath(applicationId, tenantId);
RegistryManager.getInstance().persist(resourcePath, applicationSignUp);
- ApplicationSignUpEventPublisher.publishApplicationSignUpAddedEvent(applicationId, tenantId, clusterIds);
+ ApplicationSignUpEventPublisher.publishApplicationSignUpAddedEvent(applicationId, tenantId, clusterIdList);
if (log.isInfoEnabled()) {
log.info(String.format("Application signup added successfully: [application-id] %s [tenant-id] %d",
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/signup/ApplicationSignUp.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/signup/ApplicationSignUp.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/signup/ApplicationSignUp.java
index 6dca54d..7029855 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/signup/ApplicationSignUp.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/signup/ApplicationSignUp.java
@@ -20,7 +20,6 @@
package org.apache.stratos.messaging.domain.application.signup;
import java.io.Serializable;
-import java.util.List;
/**
* Application signup.
@@ -33,7 +32,7 @@ public class ApplicationSignUp implements Serializable {
private String applicationId;
private ArtifactRepository[] artifactRepositories;
private DomainMapping[] domainMappings;
- private List<String> clusterIds;
+ private String[] clusterIds;
public int getTenantId() {
return tenantId;
@@ -67,11 +66,11 @@ public class ApplicationSignUp implements Serializable {
this.domainMappings = domainMappings;
}
- public void setClusterIds(List<String> clusterIds) {
+ public void setClusterIds(String[] clusterIds) {
this.clusterIds = clusterIds;
}
- public List<String> getClusterIds() {
+ public String[] getClusterIds() {
return clusterIds;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/signup/ApplicationSignUpAddedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/signup/ApplicationSignUpAddedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/signup/ApplicationSignUpAddedMessageProcessor.java
index 51bf646..b7c99ec 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/signup/ApplicationSignUpAddedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/signup/ApplicationSignUpAddedMessageProcessor.java
@@ -51,6 +51,10 @@ public class ApplicationSignUpAddedMessageProcessor extends MessageProcessor {
log.error("Unable to convert the JSON message to ApplicationSignUpAddedEvent");
return false;
}
+ if(event.getClusterIds() == null) {
+ log.error(String.format("Cluster ids not found in application signup added event: " +
+ "[application] %s [tenant] %d", event.getApplicationId(), event.getTenantId()));
+ }
try {
ApplicationSignUpManager.acquireWriteLock();
@@ -58,7 +62,7 @@ public class ApplicationSignUpAddedMessageProcessor extends MessageProcessor {
ApplicationSignUp applicationSignUp = new ApplicationSignUp();
applicationSignUp.setApplicationId(event.getApplicationId());
applicationSignUp.setTenantId(event.getTenantId());
- applicationSignUp.setClusterIds(event.getClusterIds());
+ applicationSignUp.setClusterIds(event.getClusterIds().toArray(new String[event.getClusterIds().size()]));
ApplicationSignUpManager.getInstance().addApplicationSignUp(applicationSignUp);
if(log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c4cd8cc/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 3ae8ceb..082e429 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -1696,6 +1696,9 @@ public class StratosApiV41Utils {
ApplicationSignUp applicationSignUp = ObjectConverter.convertApplicationSignUpBeanToStubApplicationSignUp(applicationSignUpBean);
applicationSignUp.setApplicationId(applicationId);
applicationSignUp.setTenantId(tenantId);
+ List<String> clusterIds = findApplicationClusterIds(application);
+ String[] clusterIdsArray = clusterIds.toArray(new String[clusterIds.size()]);
+ applicationSignUp.setClusterIds(clusterIdsArray);
// Encrypt artifact repository passwords
encryptRepositoryPasswords(applicationSignUp, application.getKey());
@@ -1721,6 +1724,19 @@ public class StratosApiV41Utils {
}
/**
+ * Find application cluster ids.
+ * @param application
+ * @return
+ */
+ private static List<String> findApplicationClusterIds(Application application) {
+ List<String> clusterIds = new ArrayList<String>();
+ for(ClusterDataHolder clusterDataHolder : application.getClusterDataRecursively()) {
+ clusterIds.add(clusterDataHolder.getClusterId());
+ }
+ return clusterIds;
+ }
+
+ /**
* Encrypt artifact repository passwords.
* @param applicationSignUp
* @param applicationKey