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 2014/10/30 05:14:12 UTC
[48/50] [abbrv] Merge branch '4.0.0-grouping' into
docker-grouping-merge
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
index 4a48a13,a3feb4d..7ac8334
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
@@@ -30,231 -26,295 +29,362 @@@ import org.apache.stratos.cloud.control
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.messaging.broker.publish.EventPublisher;
import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
+import org.apache.stratos.messaging.domain.topology.Port;
+import org.apache.stratos.messaging.domain.topology.ServiceType;
+import org.apache.stratos.messaging.domain.topology.Topology;
import org.apache.stratos.messaging.event.Event;
import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
-import org.apache.stratos.messaging.event.topology.*;
-import org.apache.stratos.messaging.util.Constants;
+import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
+import org.apache.stratos.messaging.event.topology.ClusterMaintenanceModeEvent;
+import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
+import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
+import org.apache.stratos.messaging.event.topology.InstanceSpawnedEvent;
+import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
+import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent;
+import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent;
+import org.apache.stratos.messaging.event.topology.MemberStartedEvent;
+import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
+import org.apache.stratos.messaging.event.topology.ServiceCreatedEvent;
+import org.apache.stratos.messaging.event.topology.ServiceRemovedEvent;
+import org.apache.stratos.messaging.util.Util;
+ import java.util.List;
+ import java.util.Properties;
+ import java.util.Set;
+
/**
* this is to send the relevant events from cloud controller to topology topic
*/
public class TopologyEventPublisher {
- private static final Log log = LogFactory.getLog(TopologyEventPublisher.class);
-
-
- public static void sendServiceCreateEvent(List<Cartridge> cartridgeList) {
- ServiceCreatedEvent serviceCreatedEvent;
- for(Cartridge cartridge : cartridgeList) {
- serviceCreatedEvent = new ServiceCreatedEvent(cartridge.getType(), (cartridge.isMultiTenant() ? ServiceType.MultiTenant : ServiceType.SingleTenant));
-
- // Add ports to the event
- Port port;
- List<PortMapping> portMappings = cartridge.getPortMappings();
- for(PortMapping portMapping : portMappings) {
- port = new Port(portMapping.getProtocol(),
- Integer.parseInt(portMapping.getPort()),
- Integer.parseInt(portMapping.getProxyPort()));
- serviceCreatedEvent.addPort(port);
- }
-
- if(log.isInfoEnabled()) {
- log.info(String.format("Publishing service created event: [service] %s", cartridge.getType()));
- }
- publishEvent(serviceCreatedEvent);
- }
- }
-
- public static void sendServiceRemovedEvent(List<Cartridge> cartridgeList) {
- ServiceRemovedEvent serviceRemovedEvent;
- for(Cartridge cartridge : cartridgeList) {
- serviceRemovedEvent = new ServiceRemovedEvent(cartridge.getType());
- if(log.isInfoEnabled()) {
- log.info(String.format("Publishing service removed event: [service] %s", serviceRemovedEvent.getServiceName()));
- }
- publishEvent(serviceRemovedEvent);
- }
- }
-
- public static void sendClusterCreatedEvent(String appId, String serviceName, String clusterId) {
- ClusterCreatedEvent clusterCreatedEvent = new ClusterCreatedEvent(appId,serviceName, clusterId);
-
- if(log.isInfoEnabled()) {
- log.info("Publishing cluster created event: " +clusterId);
- }
- publishEvent(clusterCreatedEvent);
- }
+ private static final Log log = LogFactory
+ .getLog(TopologyEventPublisher.class);
+
+ public static void sendServiceCreateEvent(List<Cartridge> cartridgeList) {
+ ServiceCreatedEvent serviceCreatedEvent;
+ for (Cartridge cartridge : cartridgeList) {
+ serviceCreatedEvent = new ServiceCreatedEvent(cartridge.getType(),
+ (cartridge.isMultiTenant() ? ServiceType.MultiTenant
+ : ServiceType.SingleTenant));
+
+ // Add ports to the event
+ Port port;
+ List<PortMapping> portMappings = cartridge.getPortMappings();
+ for (PortMapping portMapping : portMappings) {
+ port = new Port(portMapping.getProtocol(),
+ Integer.parseInt(portMapping.getPort()),
+ Integer.parseInt(portMapping.getProxyPort()));
+ serviceCreatedEvent.addPort(port);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "Publishing service created event: [service] %s",
+ cartridge.getType()));
+ }
+ publishEvent(serviceCreatedEvent);
+ }
+ }
+
+ public static void sendServiceRemovedEvent(List<Cartridge> cartridgeList) {
+ ServiceRemovedEvent serviceRemovedEvent;
+ for (Cartridge cartridge : cartridgeList) {
+ serviceRemovedEvent = new ServiceRemovedEvent(cartridge.getType());
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "Publishing service removed event: [service] %s",
+ serviceRemovedEvent.getServiceName()));
+ }
+ publishEvent(serviceRemovedEvent);
+ }
+ }
+
+ public static void sendClusterCreatedEvent(String serviceName,
+ String clusterId, Cluster cluster) {
+ ClusterCreatedEvent clusterCreatedEvent = new ClusterCreatedEvent(
+ serviceName, clusterId, cluster);
+
+ if (log.isInfoEnabled()) {
+ log.info("Publishing cluster created event: " + cluster.toString());
+ }
+ publishEvent(clusterCreatedEvent);
-
+ }
- public static void sendClusterRemovedEvent(ClusterContext ctxt,
- String deploymentPolicy) {
+ public static void sendApplicationCreatedEvent (ApplicationCreatedEvent applicationCreatedEvent) {
+
+ if(log.isInfoEnabled()) {
+ log.info("Publishing Application created event: " + applicationCreatedEvent.toString());
+ }
+
+ publishEvent(applicationCreatedEvent);
+ }
- ClusterRemovedEvent clusterRemovedEvent = new ClusterRemovedEvent(
- ctxt.getCartridgeType(), ctxt.getClusterId(), deploymentPolicy,
- ctxt.isLbCluster());
+ public static void sendApplicationUndeployedEvent (String applicationId, Set<ClusterDataHolder> clusterData) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Publishing Application undeployed event for Application: " + applicationId);
+ }
+
+ publishEvent(new ApplicationUndeployedEvent(applicationId, clusterData));
+ }
+
+ // public static void sendApplicationRemovedEvent(String applicationId, Set<ClusterDataHolder> clusterData,
+ // int tenantId, String tenantDomain) {
+ //
+ // if(log.isInfoEnabled() || log.isDebugEnabled()) {
+ // log.info("Publishing Application removed event: " + applicationId + " tenantId: " + tenantId);
+ // }
+ //
+ // publishEvent(new ApplicationRemovedEvent(applicationId, clusterData, tenantId, tenantDomain));
+ // }
+
+ public static void sendClusterRemovedEvent(ClusterContext ctxt, String deploymentPolicy) {
- ClusterRemovedEvent clusterRemovedEvent = new ClusterRemovedEvent(ctxt.getCartridgeType(), ctxt.getClusterId(), deploymentPolicy, ctxt.isLbCluster());
-
- if(log.isInfoEnabled()) {
- log.info(String.format("Publishing cluster removed event: [service] %s [cluster] %s", ctxt.getCartridgeType(), ctxt.getClusterId()));
- }
- publishEvent(clusterRemovedEvent);
-
- }
+ if (log.isInfoEnabled()) {
+ log.info(String
+ .format("Publishing cluster removed event: [service] %s [cluster] %s",
+ ctxt.getCartridgeType(), ctxt.getClusterId()));
+ }
+ publishEvent(clusterRemovedEvent);
+
+ }
+
+ public static void sendClusterMaintenanceModeEvent(ClusterContext ctxt) {
+
+ ClusterMaintenanceModeEvent clusterMaintenanceModeEvent = new ClusterMaintenanceModeEvent(
+ ctxt.getCartridgeType(), ctxt.getClusterId());
+ clusterMaintenanceModeEvent.setStatus(ClusterStatus.In_Maintenance);
+ if (log.isInfoEnabled()) {
+ log.info(String
+ .format("Publishing cluster maintenance mode event: [service] %s [cluster] %s",
+ clusterMaintenanceModeEvent.getServiceName(),
+ clusterMaintenanceModeEvent.getClusterId()));
+ }
+ publishEvent(clusterMaintenanceModeEvent);
+
+ }
+
+ public static void sendInstanceSpawnedEvent(String serviceName,
+ String clusterId, String networkPartitionId, String partitionId,
+ String memberId, String lbClusterId, String publicIp,
+ String privateIp, MemberContext context) {
+
+ long initTime = context.getInitTime();
+ InstanceSpawnedEvent instanceSpawnedEvent = new InstanceSpawnedEvent(
+ serviceName, clusterId, networkPartitionId, partitionId,
+ memberId, initTime);
+ instanceSpawnedEvent.setLbClusterId(lbClusterId);
+ instanceSpawnedEvent.setMemberIp(privateIp);
+ instanceSpawnedEvent.setMemberPublicIp(publicIp);
+ instanceSpawnedEvent.setProperties(CloudControllerUtil
+ .toJavaUtilProperties(context.getProperties()));
+ if (log.isInfoEnabled()) {
+ log.info(String
+ .format("Publishing instance spawned event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [lb-cluster-id] %s [properties] %s",
+ serviceName, clusterId, networkPartitionId,
+ partitionId, memberId, lbClusterId, context.getProperties()));
+ }
+ publishEvent(instanceSpawnedEvent);
+ }
- public static void sendMemberStartedEvent(
- InstanceStartedEvent instanceStartedEvent) {
- MemberStartedEvent memberStartedEventTopology = new MemberStartedEvent(
- instanceStartedEvent.getServiceName(),
- instanceStartedEvent.getClusterId(),
- instanceStartedEvent.getNetworkPartitionId(),
- instanceStartedEvent.getPartitionId(),
- instanceStartedEvent.getMemberId());
+ public static void sendInstanceSpawnedEvent(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId,
+ String lbClusterId, String publicIp, String privateIp, MemberContext context) {
+ InstanceSpawnedEvent instanceSpawnedEvent = new InstanceSpawnedEvent(serviceName, clusterId, networkPartitionId, partitionId, memberId);
+ instanceSpawnedEvent.setLbClusterId(lbClusterId);
+ instanceSpawnedEvent.setMemberIp(privateIp);
+ instanceSpawnedEvent.setMemberPublicIp(publicIp);
+ instanceSpawnedEvent.setProperties(CloudControllerUtil.toJavaUtilProperties(context.getProperties()));
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing instance spawned event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [lb-cluster-id] %s",
+ serviceName, clusterId, networkPartitionId, partitionId, memberId, lbClusterId));
+ }
+ publishEvent(instanceSpawnedEvent);
+ }
+ public static void sendMemberStartedEvent(InstanceStartedEvent instanceStartedEvent) {
+ MemberStartedEvent memberStartedEventTopology = new MemberStartedEvent(instanceStartedEvent.getServiceName(),
+ instanceStartedEvent.getClusterId(), instanceStartedEvent.getNetworkPartitionId(), instanceStartedEvent.getPartitionId(), instanceStartedEvent.getMemberId());
-
- // grouping
- memberStartedEventTopology.setGroupId(instanceStartedEvent.getGroupId());
- if(log.isInfoEnabled()) {
- log.info(" Grouping member started event - adding groupID " + instanceStartedEvent.getGroupId() + " for cluster " +
- instanceStartedEvent.getClusterId());
- }
-
- if(log.isInfoEnabled()) {
- log.info(String.format("Publishing member started event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [groupId] %s",
- memberStartedEventTopology.getServiceName(), memberStartedEventTopology.getClusterId(), memberStartedEventTopology.getNetworkPartitionId(),
- memberStartedEventTopology.getPartitionId(), memberStartedEventTopology.getMemberId(), memberStartedEventTopology.getGroupId()));
- }
-
- publishEvent(memberStartedEventTopology);
- }
-
- public static void sendMemberActivatedEvent(MemberActivatedEvent memberActivatedEvent) {
- if(log.isInfoEnabled()) {
- log.info(String.format("Publishing member activated event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [groupId] %s",
- memberActivatedEvent.getServiceName(), memberActivatedEvent.getClusterId(), memberActivatedEvent.getNetworkPartitionId(),
- memberActivatedEvent.getPartitionId(), memberActivatedEvent.getMemberId(), memberActivatedEvent.getGroupId()));
- }
- publishEvent(memberActivatedEvent);
- }
+ if (log.isInfoEnabled()) {
+ log.info(String
+ .format("Publishing member started event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s",
+ instanceStartedEvent.getServiceName(),
+ instanceStartedEvent.getClusterId(),
+ instanceStartedEvent.getNetworkPartitionId(),
+ instanceStartedEvent.getPartitionId(),
+ instanceStartedEvent.getMemberId()));
+ }
+ publishEvent(memberStartedEventTopology);
+ }
+
+ public static void sendMemberActivatedEvent(
+ MemberActivatedEvent memberActivatedEvent) {
+ if (log.isInfoEnabled()) {
+ log.info(String
+ .format("Publishing member activated event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s",
+ memberActivatedEvent.getServiceName(),
+ memberActivatedEvent.getClusterId(),
+ memberActivatedEvent.getNetworkPartitionId(),
+ memberActivatedEvent.getPartitionId(),
+ memberActivatedEvent.getMemberId()));
+ }
+ publishEvent(memberActivatedEvent);
+ }
- public static void sendMemberReadyToShutdownEvent(
- MemberReadyToShutdownEvent memberReadyToShutdownEvent) {
- if (log.isInfoEnabled()) {
- log.info(String
- .format("Publishing member Ready to shut down event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s",
- memberReadyToShutdownEvent.getServiceName(),
- memberReadyToShutdownEvent.getClusterId(),
- memberReadyToShutdownEvent.getNetworkPartitionId(),
- memberReadyToShutdownEvent.getPartitionId(),
- memberReadyToShutdownEvent.getMemberId()));
- }
- publishEvent(memberReadyToShutdownEvent);
- }
+ public static void sendMemberReadyToShutdownEvent(MemberReadyToShutdownEvent memberReadyToShutdownEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing member Ready to shut down event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [groupId] %s",
+ memberReadyToShutdownEvent.getServiceName(), memberReadyToShutdownEvent.getClusterId(), memberReadyToShutdownEvent.getNetworkPartitionId(),
+ memberReadyToShutdownEvent.getPartitionId(), memberReadyToShutdownEvent.getMemberId(), memberReadyToShutdownEvent.getGroupId()));
+ }
+ // grouping
+ memberReadyToShutdownEvent.setGroupId(memberReadyToShutdownEvent.getGroupId());
+ publishEvent(memberReadyToShutdownEvent);
+ }
- public static void sendMemberMaintenanceModeEvent(
- MemberMaintenanceModeEvent memberMaintenanceModeEvent) {
- if (log.isInfoEnabled()) {
- log.info(String
- .format("Publishing Maintenance mode event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s",
- memberMaintenanceModeEvent.getServiceName(),
- memberMaintenanceModeEvent.getClusterId(),
- memberMaintenanceModeEvent.getNetworkPartitionId(),
- memberMaintenanceModeEvent.getPartitionId(),
- memberMaintenanceModeEvent.getMemberId()));
- }
- publishEvent(memberMaintenanceModeEvent);
- }
+ public static void sendMemberMaintenanceModeEvent(MemberMaintenanceModeEvent memberMaintenanceModeEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing Maintenance mode event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [groupId] %s",
+ memberMaintenanceModeEvent.getServiceName(), memberMaintenanceModeEvent.getClusterId(), memberMaintenanceModeEvent.getNetworkPartitionId(),
+ memberMaintenanceModeEvent.getPartitionId(), memberMaintenanceModeEvent.getMemberId(), memberMaintenanceModeEvent.getGroupId()));
+ }
- public static void sendMemberTerminatedEvent(String serviceName,
- String clusterId, String networkPartitionId, String partitionId,
- String memberId, Properties properties) {
- MemberTerminatedEvent memberTerminatedEvent = new MemberTerminatedEvent(
- serviceName, clusterId, networkPartitionId, partitionId,
- memberId);
- memberTerminatedEvent.setProperties(properties);
- if (log.isInfoEnabled()) {
- log.info(String
- .format("Publishing member terminated event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s",
- serviceName, clusterId, networkPartitionId,
- partitionId, memberId));
- }
- publishEvent(memberTerminatedEvent);
- }
+ publishEvent(memberMaintenanceModeEvent);
+ }
- public static void sendCompleteTopologyEvent(Topology topology) {
- CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(
- topology);
+ public static void sendGroupActivatedEvent(GroupActivatedEvent groupActivatedEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing group activated event: [appId] %s [group] %s",
+ groupActivatedEvent.getAppId(), groupActivatedEvent.getGroupId()));
+ }
+ publishEvent(groupActivatedEvent);
+ }
- if (log.isDebugEnabled()) {
- log.debug(String.format("Publishing complete topology event"));
- }
- publishEvent(completeTopologyEvent);
- }
+ public static void sendClusterActivatedEvent(ClusterActivatedEvent clusterActivatedEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing cluster activated event: [service] %s [cluster] %s [appId] %s",
+ clusterActivatedEvent.getServiceName(), clusterActivatedEvent.getClusterId() , clusterActivatedEvent.getAppId()));
+ }
+ publishEvent(clusterActivatedEvent);
+ }
+
+ public static void sendClusterInActivateEvent(ClusterInactivateEvent clusterInActiveEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing cluster in-active event: [service] %s [cluster] %s [appId] %s",
+ clusterInActiveEvent.getServiceName(), clusterInActiveEvent.getClusterId() , clusterInActiveEvent.getAppId()));
+ }
+ publishEvent(clusterInActiveEvent);
+ }
+
+
+ public static void sendMemberTerminatedEvent(String serviceName, String clusterId, String networkPartitionId,
+ String partitionId, String memberId, Properties properties, String groupId) {
+ MemberTerminatedEvent memberTerminatedEvent = new MemberTerminatedEvent(serviceName, clusterId, networkPartitionId, partitionId, memberId);
+ memberTerminatedEvent.setProperties(properties);
+ memberTerminatedEvent.setGroupId(groupId);
+
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing member terminated event: [service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s [groupId] %s", serviceName, clusterId, networkPartitionId,
+ partitionId, memberId, groupId));
+ }
+
+ publishEvent(memberTerminatedEvent);
+ }
+
+ public static void sendCompleteTopologyEvent(Topology topology) {
+ CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology);
+
+ if(log.isDebugEnabled()) {
+ log.debug(String.format("Publishing complete topology event"));
+ }
+ publishEvent(completeTopologyEvent);
+ }
+
+ public static void sendApplicationActivatedEvent(ApplicationActivatedEvent applicationActivatedEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing application activated event: [appId] %s",
+ applicationActivatedEvent.getAppId()));
+ }
+ publishEvent(applicationActivatedEvent);
+ }
+
+ public static void publishEvent(Event event) {
+ EventPublisher eventPublisher = EventPublisherPool.getPublisher(Constants.TOPOLOGY_TOPIC);
+ eventPublisher.publish(event);
+ }
+
+ public static void sendApplicationInactivatedEvent(ApplicationInactivatedEvent applicationActivatedEvent1) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing application in activated event: [appId] %s",
+ applicationActivatedEvent1.getAppId()));
+ }
+ publishEvent(applicationActivatedEvent1);
+ }
+
+ public static void sendApplicationTerminatingEvent(ApplicationTerminatingEvent applicationTerminatingEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing application terminating event: [appId] %s",
+ applicationTerminatingEvent.getAppId()));
+ }
+ publishEvent(applicationTerminatingEvent);
+ }
+
+ public static void sendApplicationTerminatedEvent(ApplicationTerminatedEvent applicationTerminatedEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing application terminated event: [appId] %s",
+ applicationTerminatedEvent.getAppId()));
+ }
+ publishEvent(applicationTerminatedEvent);
+ }
+
+ public static void sendGroupInActiveEvent(GroupInactivateEvent groupInActivateEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing group in-active event: [appId] %s",
+ groupInActivateEvent.getAppId()));
+ }
+ publishEvent(groupInActivateEvent);
+ }
+
+
+ public static void sendGroupTerminatedEvent(GroupTerminatedEvent groupTerminatedTopologyEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing group terminated event: [appId] %s",
+ groupTerminatedTopologyEvent.getAppId()));
+ }
+ publishEvent(groupTerminatedTopologyEvent);
+ }
+
+ public static void sendGroupTerminatingEvent(GroupTerminatingEvent groupTerminatingTopologyEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing group terminating event: [appId] %s",
+ groupTerminatingTopologyEvent.getAppId()));
+ }
+ publishEvent(groupTerminatingTopologyEvent);
+ }
+
+ public static void sendClusterTerminatingEvent (ClusterTerminatingEvent clusterTerminatingEvent) {
+
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing Cluster terminating event: [appId] %s [cluster id] %s",
+ clusterTerminatingEvent.getAppId(), clusterTerminatingEvent.getClusterId()));
+ }
+
+ publishEvent(clusterTerminatingEvent);
+ }
+
+ public static void sendClusterTerminatedEvent (ClusterTerminatedEvent clusterTerminatedEvent) {
+
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing Cluster terminated event: [appId] %s [cluster id] %s",
+ clusterTerminatedEvent.getAppId(), clusterTerminatedEvent.getClusterId()));
+ }
+ publishEvent(clusterTerminatedEvent);
+ }
-}
++
+ public static void publishEvent(Event event) {
+ String topic = Util.getMessageTopicName(event);
+ EventPublisher eventPublisher = EventPublisherPool.getPublisher(topic);
+ eventPublisher.publish(event);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index fe2493d,0ad8488..5cea0b7
--- 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
@@@ -161,12 -159,11 +161,16 @@@ public class CloudControllerUtil
}
}
}
+
+ // populate container
+ if(config.getContainer() != null) {
+ cartridge.setContainer(config.getContainer());
+ }
+ if(config.getExportingProperties() != null){
+ cartridge.setExportingProperties(config.getExportingProperties());
+ }
+
return cartridge;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.manager.console/console/util/utility.jag
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager.console/console/util/utility.jag
index 916f265,083b330..c75c209
--- a/components/org.apache.stratos.manager.console/console/util/utility.jag
+++ b/components/org.apache.stratos.manager.console/console/util/utility.jag
@@@ -321,20 -321,14 +321,31 @@@ consoleAppUtil = new function()
if (response.xhr.status >= 200 && response.xhr.status < 300) { //if success
session.put("get-status", "succeeded");
+ } else if (response.xhr.status >= 300 && response.xhr.status < 400) { //if redirects
+ if(response.data != null && response.data != undefined) {
+ session.put("get-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 400 && response.xhr.status < 500) { //if client error
+ if(response.data != null && response.data != undefined) {
+ session.put("get-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 500 && response.xhr.status < 600) { //if server error
+ if(response.data != null && response.data != undefined) {
+ session.put("get-status", parse(response.data).Error.errorMessage);
+ }
+ } else {
+ session.put("get-status", "Unknown response!");
++
++ if (response.xhr.status >= 200 && response.xhr.status < 300) { //if success
++ session.put("get-status", "succeeded");
+ } else if (response.xhr.status >= 400 && response.xhr.status < 500) { //if client error
+ if(response.data != null && response.data != undefined) {
+ session.put("get-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 500 && response.xhr.status < 600) { //if server error
+ if(response.data != null && response.data != undefined) {
+ session.put("get-status", response.data); return;
+ }
}
log.debug("sent is: " + stringify(response));
@@@ -401,20 -395,14 +412,30 @@@
if (response.xhr.status >= 200 && response.xhr.status < 300) { //if success
session.put("deploy-status", "succeeded");
+ } else if (response.xhr.status >= 300 && response.xhr.status < 400) { //if redirects
+ if(response.data != null && response.data != undefined) {
+ session.put("deploy-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 400 && response.xhr.status < 500) { //if client error
+ if(response.data != null && response.data != undefined) {
+ session.put("deploy-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 500 && response.xhr.status < 600) { //if server error
+ if(response.data != null && response.data != undefined) {
+ session.put("deploy-status", parse(response.data).Error.errorMessage);
+ }
+ } else {
+ session.put("deploy-status", "Unknown response!");
++ if (response.xhr.status >= 200 && response.xhr.status < 300) { //if success
++ session.put("deploy-status", "succeeded");
+ } else if (response.xhr.status >= 400 && response.xhr.status < 500) { //if client error
+ if(response.data != null && response.data != undefined) {
+ session.put("deploy-status", parse(response.data).Error.errorMessage);
+ }
+ } else if (response.xhr.status >= 500 && response.xhr.status < 600) { //if server error
+ if(response.data != null && response.data != undefined) {
+ session.put("deploy-status", response.data); return;
+ }
}
log.debug("sent is: " + stringify(response));
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 539c983,0dd09a5..eedd1e5
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@@ -35,13 -37,8 +37,10 @@@ import org.apache.stratos.manager.lb.ca
import org.apache.stratos.manager.repository.Repository;
import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
import org.apache.stratos.manager.subscriber.Subscriber;
- import org.apache.stratos.manager.subscription.CartridgeSubscription;
- import org.apache.stratos.manager.subscription.PersistenceContext;
- import org.apache.stratos.manager.subscription.SubscriptionData;
- import org.apache.stratos.manager.subscription.SubscriptionDomain;
+ import org.apache.stratos.manager.subscription.*;
import org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory;
+import org.apache.stratos.manager.subscription.filter.LBCreationSubscriptionFilter;
+import org.apache.stratos.manager.subscription.filter.SubscriptionFilter;
import org.apache.stratos.manager.subscription.tenancy.SubscriptionMultiTenantBehaviour;
import org.apache.stratos.manager.subscription.tenancy.SubscriptionSingleTenantBehaviour;
import org.apache.stratos.manager.subscription.tenancy.SubscriptionTenancyBehaviour;
@@@ -69,14 -66,202 +69,209 @@@ import java.util.*
public class CartridgeSubscriptionManager {
private static Log log = LogFactory.getLog(CartridgeSubscriptionManager.class);
+ //private static DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager();
+
+ public GroupSubscription createGroupSubscription (String groupName, String groupAlias, int tenantId)
+ throws GroupSubscriptionException {
+
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
+ GroupSubscription groupSubscription;
+
+ try {
+ groupSubscription = dataInsertionAndRetrievalMgr.getGroupSubscription(tenantId, groupName, groupAlias);
+
+ } catch (PersistenceManagerException e) {
+ throw new GroupSubscriptionException(e);
+ }
+
+ if (groupSubscription != null) {
+ // Group Subscription already exists with same Group name and alias
+ throw new GroupSubscriptionException("Group Subscription already exists with name [ " + groupName + " ], alias [ " + groupAlias + " ]");
+ }
+
+ return new GroupSubscription(groupName, groupAlias);
+ }
+
+ public ApplicationSubscription createApplicationSubscription (String appId, int tenantId) throws ApplicationSubscriptionException {
+
+ if (log.isDebugEnabled()) {
+ log.debug("create Application Subscription for appId: " + appId + " and tenantId: " + tenantId);
+ }
+
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
+ ApplicationSubscription appSubscription;
+
+ try {
+ appSubscription = dataInsertionAndRetrievalMgr.getApplicationSubscription(tenantId, appId);
+
+ } catch (PersistenceManagerException e) {
+ log.error("failed to retrieve application Subscription for appId: " + appId + " and tenantId: " + tenantId + " e:" + e);
+ throw new ApplicationSubscriptionException(e);
+ }
+
+ if (appSubscription != null) {
+ // Composite App Subscription already exists with same app id
+ log.error("app Id already exists, failed to createappSubscription for appId: " + appId + " and tenantId: " + tenantId);
+ throw new ApplicationSubscriptionException("Composite App Subscription already exists with Id [ " + appId + " ]");
+ } else {
+
+ if (log.isDebugEnabled()) {
+ log.debug("creating new application subscription for app:" + appId );
+ }
+
+ appSubscription = new ApplicationSubscription(appId);
+ // persist
+ try {
+ this.persistApplicationSubscription(appSubscription);
+ } catch (ADCException e) {
+ // TODO Auto-generated catch block
+ log.error("Failed to persist applicaiton subscription for appId: " + appId +
+ " and tenantId: " + tenantId + " e:" + e);
+ }
+ }
+
+ return new ApplicationSubscription(appId);
+ }
+
+ public void removeApplicationSubscription (String appId, int tenantId) throws ApplicationSubscriptionException {
+
+ if (log.isDebugEnabled()) {
+ log.debug("remove Application Subscription for appId: " + appId + " and tenantId: " + tenantId);
+ }
+
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
+ ApplicationSubscription appSubscription = null;
+
+ try {
+ appSubscription = dataInsertionAndRetrievalMgr.getApplicationSubscription(tenantId, appId);
+
+ } catch (PersistenceManagerException e) {
+ log.error("failed to retrieve Application Subscription for appId: " + appId + " and tenantId: " + tenantId + "with exception:" + e);
+ throw new ApplicationSubscriptionException(e);
+ }
+
+ if (appSubscription != null) {
+
+ try {
+ dataInsertionAndRetrievalMgr.removeApplicationSubscription(tenantId, appId);
+ } catch (PersistenceManagerException e) {
+ log.error("failed to remove Application Subscription for appId: " + appId + " and tenantId: " + tenantId + " with exception:" + e);
+ throw new ApplicationSubscriptionException(e);
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("successfully removed Application Subscription for appId: " + appId + " and tenantId: " + tenantId);
+ }
+
+ }
+ }
+
+ public ApplicationSubscription getApplicationSubscription (String appId, int tenantId) throws ApplicationSubscriptionException {
+ if (log.isDebugEnabled()) {
+ log.debug("get Application Subscription for appId: " + appId + " and tenantId: " + tenantId);
+ }
+
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
+ ApplicationSubscription appSubscription = null;
+
+ try {
+ appSubscription = dataInsertionAndRetrievalMgr.getApplicationSubscription(tenantId, appId);
+
+ } catch (PersistenceManagerException e) {
+ log.error("failed to Application Subscription for appId: " + appId + " and tenantId: " + tenantId + " e:" + e);
+ throw new ApplicationSubscriptionException(e);
+ }
+
+ return appSubscription;
+ }
+
+ public CartridgeSubscription createCartridgeSubscription (SubscriptionData subscriptionData) throws ADCException,
+ InvalidCartridgeAliasException, DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException,
+ RepositoryRequiredException, RepositoryCredentialsRequiredException, RepositoryTransportException,
+ AlreadySubscribedException, InvalidRepositoryException {
+
+
+ CartridgeSubscriptionUtils.validateCartridgeAlias(subscriptionData.getTenantId(), subscriptionData.getCartridgeType(), subscriptionData.getCartridgeAlias());
+
+ CartridgeInfo cartridgeInfo;
+ try {
+ cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(subscriptionData.getCartridgeType());
+
+ } catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
+ String message = subscriptionData.getCartridgeType() + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
+ log.error(message);
+ throw new ADCException(message, e);
+
+ } catch (Exception e) {
+ String message = "Error getting info for " + subscriptionData.getCartridgeType();
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ // subscribe to relevant service cartridge
+ CartridgeSubscription serviceCartridgeSubscription = subscribe (subscriptionData, cartridgeInfo, null);
+
+ return serviceCartridgeSubscription;
+ }
+
+ public void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().cacheAndPersistSubcription(cartridgeSubscription);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error saving subscription for tenant " +
+ cartridgeSubscription.getSubscriber().getTenantDomain() + ", alias " + cartridgeSubscription.getType();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }
+
+ log.info("Successful Subscription: " + cartridgeSubscription.toString());
+
+ // Publish tenant subscribed event to message broker
+ Set<String> clusterIds = new HashSet<String>();
+ clusterIds.add(cartridgeSubscription.getCluster().getClusterDomain());
+ CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getCartridgeInfo().getType(), clusterIds);
+ }
+
+ public void persistGroupSubscription (GroupSubscription groupSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().persistGroupSubscription(groupSubscription);
+
+ } catch (PersistenceManagerException e) {
+ throw new ADCException(e);
+ }
+ }
+
+ public void persistApplicationSubscription (ApplicationSubscription compositeAppSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().persistApplicationSubscription(compositeAppSubscription);
+
+ } catch (PersistenceManagerException e) {
+ throw new ADCException(e);
+ }
+ }
+ public SubscriptionInfo subscribeToCartridgeWithProperties(SubscriptionData subscriptionData) throws ADCException,
+ InvalidCartridgeAliasException,
+ DuplicateCartridgeAliasException,
+ PolicyException,
+ UnregisteredCartridgeException,
+ RepositoryRequiredException,
+ RepositoryCredentialsRequiredException,
+ RepositoryTransportException,
+ AlreadySubscribedException,
+ InvalidRepositoryException {
+ /**
+ *
+ * @param subscriptionData
+ * @return
+ * @throws Exception since the caller doesn't react upon specific exceptions, simply throw Generic Exception class.
+ */
+ public static SubscriptionInfo subscribeToCartridgeWithProperties(SubscriptionData subscriptionData) throws Exception {
// validate cartridge alias
CartridgeSubscriptionUtils.validateCartridgeAlias(subscriptionData.getTenantId(), subscriptionData.getCartridgeType(), subscriptionData.getCartridgeAlias());
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
index 9d6b301,1f69fd6..97b4d99
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
@@@ -204,21 -209,53 +210,57 @@@ public class Cluster implements Seriali
return partitionIds.keySet();
}
+ @Override
+ public boolean isStateTransitionValid(ClusterStatus newState) {
+ return clusterStateManager.isStateTransitionValid(newState);
+ }
+
+ @Override
+ public Stack<ClusterStatus> getTransitionedStates() {
+ return clusterStateManager.getStateStack();
+ }
+
public ClusterStatus getStatus() {
- return status;
+ //return status;
+ return clusterStateManager.getCurrentState();
}
+ public void setStatus(ClusterStatus status) {
+ this.status = status;
+ }
+
- @Override
- public String toString() {
- return "Cluster [serviceName=" + serviceName + ", clusterId=" + clusterId + ", autoscalePolicyName="
- + autoscalePolicyName + ", deploymentPolicyName=" + deploymentPolicyName + ", hostNames=" + hostNames
- + ", tenantRange=" + tenantRange + ", isLbCluster=" + isLbCluster + ", isKubernetesCluster="
- + isKubernetesCluster + ", memberMap=" + memberMap + ", status=" + status
- + ", loadBalanceAlgorithmName=" + loadBalanceAlgorithmName + ", properties=" + properties + "]";
+ public void setStatus(ClusterStatus newStatus) {
+ clusterStateManager.changeState(newStatus);
+ //this.status = newStatus;
}
+
+ public boolean equals(Object other) {
+ if (other == null || !(other instanceof Cluster)) {
+ return false;
+ }
+
+ if (this == other) {
+ return true;
+ }
+
+ Cluster that = (Cluster) other;
+ return this.clusterId.equals(that.clusterId);
+ }
+
+ public int hashCode() {
+ return clusterId.hashCode();
+ }
+
+ public String getAppId() {
+ return appId;
+ }
+
+ // public ClusterStatus getTempStatus() {
+ // return status;
+ // }
+ //
+ // public void setTempStatus(ClusterStatus status) {
+ // this.status = status;
+ // }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
index 70872c5,fbab2f6..989f079
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
@@@ -50,15 -49,16 +50,17 @@@ public class Member implements Serializ
@XmlJavaTypeAdapter(MapAdapter.class)
private Properties properties;
private String lbClusterId;
+ private LifeCycleStateManager<MemberStatus> memberStateManager;
- public Member(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId) {
+ public Member(String serviceName, String clusterId, String networkPartitionId, String partitionId, String memberId, long initTime) {
this.serviceName = serviceName;
this.clusterId = clusterId;
this.networkPartitionId = networkPartitionId;
this.partitionId = partitionId;
this.memberId = memberId;
this.portMap = new HashMap<Integer, Port>();
+ this.initTime = initTime;
+ this.memberStateManager = new LifeCycleStateManager<MemberStatus>(MemberStatus.Created, memberId);
}
public String getServiceName() {
@@@ -72,21 -72,28 +74,33 @@@
public String getMemberId() {
return memberId;
}
+
+ public long getInitTime() {
+ return initTime;
+ }
+
+
+ @Override
+ public boolean isStateTransitionValid(MemberStatus newState) {
+ return memberStateManager.isStateTransitionValid(newState);
+ }
+
+ @Override
public MemberStatus getStatus() {
- return status;
+ return memberStateManager.getCurrentState();
+ }
+
+ public Stack<MemberStatus> getTransitionedStates () {
+ return memberStateManager.getStateStack();
}
- public void setStatus(MemberStatus status) {
- this.status = status;
+ @Override
+ public void setStatus(MemberStatus newState) {
+ this.memberStateManager.changeState(newState);
}
- public boolean isActive() {
- return (this.status == MemberStatus.Activated);
+ public boolean isActive () {
+ return memberStateManager.getCurrentState().equals(MemberStatus.Activated);
}
public Collection<Port> getPorts() {
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberMaintenanceModeEvent.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Constants.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
index 168ebe3,48905f3..c458f77
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
@@@ -57,120 -56,102 +63,126 @@@ public class Util
return props;
}
- /**
- * Validate tenant range.
- * Valid formats: Integer-Integer, Integer-*
- * Examples: 1-100, 101-200, 201-*
- * @param tenantRange
- */
- public static void validateTenantRange(String tenantRange) {
- boolean valid = false;
- if(tenantRange != null) {
- if(tenantRange.equals("*")) {
- valid = true;
- } else {
- String[] array = tenantRange.split(Constants.TENANT_RANGE_DELIMITER);
- if(array.length == 2) {
- // Integer-Integer
- if(isNumber(array[0]) && (isNumber(array[1]))){
- valid = true;
- }
- // Integer-*
- else if(isNumber(array[0]) && "*".equals(array[1])) {
- valid = true;
- }
- }
- }
+ /**
+ * Validate tenant range.
+ * Valid formats: Integer-Integer, Integer-*
+ * Examples: 1-100, 101-200, 201-*
+ *
+ * @param tenantRange
+ */
+ public static void validateTenantRange(String tenantRange) {
+ boolean valid = false;
+ if (tenantRange != null) {
+ if (tenantRange.equals("*")) {
+ valid = true;
+ } else {
+ String[] array = tenantRange.split(Constants.TENANT_RANGE_DELIMITER);
+ if (array.length == 2) {
+ // Integer-Integer
+ if (isNumber(array[0]) && (isNumber(array[1]))) {
+ valid = true;
+ }
+ // Integer-*
+ else if (isNumber(array[0]) && "*".equals(array[1])) {
+ valid = true;
+ }
+ }
+ }
- }
- if(!valid)
- throw new RuntimeException(String.format("Tenant range %s is not valid", tenantRange));
- }
+ }
+ if (!valid)
+ throw new RuntimeException(String.format("Tenant range %s is not valid", tenantRange));
+ }
- public static boolean isNumber(String s) {
- try {
- Integer.parseInt(s);
- return true;
- } catch (NumberFormatException e) {
- // Not a valid number
- }
- return false;
- }
-
- /**
- * Transform json into an object of given type.
- *
- * @param json
- * @param type
- * @return
- */
- public static Object jsonToObject(String json, Class type) {
- return (new JsonMessage(json, type)).getObject();
- }
+ public static boolean isNumber(String s) {
+ try {
+ Integer.parseInt(s);
+ return true;
+ }
+ catch (NumberFormatException e) {
+ // Not a valid number
+ }
+ return false;
+ }
+
+ /**
+ * Transform json into an object of given type.
+ * @param json
+ * @param type
+ * @return
+ */
+ public static Object jsonToObject(String json, Class type) {
+ return (new JsonMessage(json, type)).getObject();
+ }
+
+ public static String ObjectToJson(Object obj) {
+ Gson gson = new Gson();
+ String result = gson.toJson(obj);
+ return result;
+ }
+ // Time interval between each ping message sent to topic.
+ private static int averagePingInterval;
+
+ // Time interval between each ping message after an error had occurred.
+ private static int failoverPingInterval;
+
+ /**
+ * fetch value from system param
+ *
+ * @return
+ */
+ public static int getAveragePingInterval() {
+ if (averagePingInterval <= 0) {
+ averagePingInterval =
+ Util.getNumericSystemProperty(Constants.DEFAULT_AVERAGE_PING_INTERVAL,
+ Constants.AVERAGE_PING_INTERVAL_PROPERTY);
+ }
+ return averagePingInterval;
+ }
- // Time interval between each ping message sent to topic.
- private static int averagePingInterval;
+ /**
+ * fetch value from system param
+ *
+ * @return
+ */
+ public static int getFailoverPingInterval() {
+ if (failoverPingInterval <= 0) {
+ failoverPingInterval =
+ Util.getNumericSystemProperty(Constants.DEFAULT_FAILOVER_PING_INTERVAL,
+ Constants.FAILOVER_PING_INTERVAL_PROPERTY);
+ }
+ return failoverPingInterval;
+ }
- // Time interval between each ping message after an error had occurred.
- private static int failoverPingInterval;
+ /**
+ * Method to safely access numeric system properties
+ *
+ * @param defaultValue
+ * @return
+ */
+ public static Integer getNumericSystemProperty(Integer defaultValue, String propertyKey) {
+ try {
+ return Integer.valueOf(System.getProperty(propertyKey));
+ } catch (NumberFormatException ex) {
+ return defaultValue;
+ }
+ }
- /**
- * fetch value from system param
- * @return
- */
- public static int getAveragePingInterval() {
- if (averagePingInterval <= 0) {
- averagePingInterval = Util.getNumericSystemProperty(Constants.DEFAULT_AVERAGE_PING_INTERVAL,Constants.AVERAGE_PING_INTERVAL_PROPERTY);
- }
- return averagePingInterval;
- }
+ public static String getMessageTopicName(Event event) {
+ return event.getClass().getName().substring(BEGIN_INDEX).replace(".", "/");
+ }
- /**
- * fetch value from system param
- * @return
- */
- public static int getFailoverPingInterval() {
- if (failoverPingInterval <= 0) {
- failoverPingInterval = Util.getNumericSystemProperty(Constants.DEFAULT_FAILOVER_PING_INTERVAL,Constants.FAILOVER_PING_INTERVAL_PROPERTY);
- }
- return failoverPingInterval;
- }
+ public static String getEventNameForTopic(String arg0) {
+ return "org.apache.stratos.messaging.event.".concat(arg0.replace("/", "."));
+ }
- /**
- * Method to safely access numeric system properties
- * @param defaultValue
- * @return
- */
- public static Integer getNumericSystemProperty(Integer defaultValue, String propertyKey) {
- try {
- return Integer.valueOf(System.getProperty(propertyKey));
- } catch (NumberFormatException ex) {
- return defaultValue;
- }
- }
+ public static String getRandomString(int len) {
+ String AB = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ Random rnd = new Random();
+ StringBuilder sb = new StringBuilder(len);
+ for (int i = 0; i < len; i++)
+ sb.append(AB.charAt(rnd.nextInt(AB.length())));
+ return sb.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/cartridge/definition/CartridgeDefinitionBean.java
index c69659e,2a99610..56dbfcf
--- 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
@@@ -59,17 -57,16 +59,20 @@@ public class CartridgeDefinitionBean
public String defaultDeploymentPolicy;
public String serviceGroup;
+
+ public ContainerBean container;
+
+ public String deployerType;
+ private String[] exportingProperties;
+
public String toString () {
return "Type: " + type + ", Provider: " + provider + ", Host: " + host + ", Display Name: " + displayName +
- ", Description: " + description + ", Version: " + version + ", Multitenant " + multiTenant + "\n" +
+ ", Description: " + description + ", Version: " + version + ", Multitenant " + multiTenant +", Public " + isPublic + "\n" +
getDeploymentDetails() + "\n PortMapping: " + getPortMappings() + "\n IaaS: " + getIaasProviders() +
- "\n LoadBalancer: " + getLoadBalancerInfo() + "\n Properties: " + getProperties() +"\n VolumeBean mappings "+ persistence.toString();
+ "\n LoadBalancer: " + getLoadBalancerInfo() + "\n Properties: " + getProperties() +"\n VolumeBean mappings "+ persistence.toString()
+ + "\n Exports " + exportingProperties.toString();
}
private String getDeploymentDetails () {
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/topology/Cluster.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/topology/Cluster.java
index e7de37a,f2e5d73..e8a30f9
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/topology/Cluster.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/topology/Cluster.java
@@@ -19,13 -19,19 +19,13 @@@
package org.apache.stratos.rest.endpoint.bean.topology;
import javax.xml.bind.annotation.XmlRootElement;
+import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean;
+
import java.util.List;
- @XmlRootElement
+ @XmlRootElement(name="clusters")
public class Cluster {
- @Override
- public String toString() {
- return "Cluster [serviceName=" + serviceName + ", clusterId="
- + clusterId + ", member=" + member + ", tenantRange="
- + tenantRange + ", hostNames=" + hostNames + ", isLbCluster="
- + isLbCluster + "]";
- }
-
public String serviceName;
public String clusterId;
http://git-wip-us.apache.org/repos/asf/stratos/blob/17cc86eb/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 40cc88d,cc3ae4a..871078f
--- 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
@@@ -20,12 -20,23 +20,25 @@@
package org.apache.stratos.rest.endpoint.bean.util.converter;
import org.apache.commons.lang.StringUtils;
+import org.apache.stratos.autoscaler.stub.kubernetes.PropertiesE;
+import org.apache.stratos.autoscaler.stub.kubernetes.PropertyE;
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.stub.pojo.*;
+ import org.apache.stratos.cloud.controller.stub.pojo.application.*;
+ import org.apache.stratos.manager.composite.application.beans.ApplicationDefinition;
+ import org.apache.stratos.manager.composite.application.beans.GroupDefinition;
+ import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition;
+ import org.apache.stratos.manager.composite.application.beans.SubscribableInfo;
import org.apache.stratos.manager.deploy.service.Service;
+ import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions;
+ import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
import org.apache.stratos.manager.subscription.SubscriptionDomain;
+ import org.apache.stratos.messaging.domain.topology.Application;
import org.apache.stratos.messaging.domain.topology.Cluster;
+ import org.apache.stratos.messaging.domain.topology.Group;
+ import org.apache.stratos.rest.endpoint.bean.ApplicationBean;
+ import org.apache.stratos.rest.endpoint.bean.GroupBean;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*;
@@@ -95,23 -99,23 +108,36 @@@ public class PojoConverter
cartridgeConfig.setProperties(getProperties(cartridgeDefinitionBean.property));
}
+ if(cartridgeDefinitionBean.getExportingProperties() != null)
+ {
+ cartridgeConfig.setExportingProperties(cartridgeDefinitionBean.getExportingProperties());
+ }
+
+ if (cartridgeDefinitionBean.container != null) {
+ cartridgeConfig.setContainer(getContainer(cartridgeDefinitionBean.container));
+ }
+
return cartridgeConfig;
}
+
+ public static ServiceGroup populateServiceGroupPojo (ServiceGroupDefinition serviceGroupDefinition ) {
+ ServiceGroup servicegroup = new ServiceGroup();
+
+ // implement conversion (mostly List -> Array)
+
+ return servicegroup;
+ }
- private static LoadbalancerConfig getLBConfig(LoadBalancerBean loadBalancer) {
+
+ private static Container getContainer(ContainerBean container) {
+ Container cn = new Container();
+ cn.setDockerFileRepo(container.dockerfileRepo);
+ cn.setImageName(container.imageName);
+ //cn.setProperties(getProperties(container.property));
+ return cn;
+ }
+
+ private static LoadbalancerConfig getLBConfig(LoadBalancerBean loadBalancer) {
LoadbalancerConfig lbConfig = new LoadbalancerConfig();
lbConfig.setType(loadBalancer.type);
if (loadBalancer.property != null && !loadBalancer.property.isEmpty()) {
@@@ -170,13 -174,14 +196,17 @@@
return iaasConfigsArray;
}
+ public static Persistence getPersistence(PersistenceBean persistenceBean) {
+ public static Persistence getPersistence(PersistenceBean persistenceBean) {
+
Persistence persistence = new Persistence();
persistence.setPersistanceRequired(persistenceBean.isRequired);
VolumeBean[] volumeBean = new VolumeBean[persistenceBean.volume.size()];
persistenceBean.volume.toArray(volumeBean);
+ Volume[] volumes = new Volume[persistenceBean.volume.size()];
+ for (int i = 0; i < volumes.length; i++) {
+ Volume[] volumes = new Volume[persistenceBean.volume.size()];
+ for (int i = 0 ; i < volumes.length ; i++) {
Volume volume = new Volume();
volume.setId(volumeBean[i].id);
volume.setVolumeId(volumeBean[i].volumeId);
@@@ -694,171 -674,141 +724,305 @@@
for (Service service : services) {
serviceDefinitionBeans.add(convertToServiceDefinitionBean(service));
}
-
return serviceDefinitionBeans;
}
+
+ public static org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup convertToASKubernetesGroupPojo(KubernetesGroup kubernetesGroupBean) {
+
+ org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup kubernetesGroup = new
+ org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup();
+
+ kubernetesGroup.setGroupId(kubernetesGroupBean.getGroupId());
+ kubernetesGroup.setDescription(kubernetesGroupBean.getDescription());
+ kubernetesGroup.setKubernetesMaster(convertToASKubernetesMasterPojo(kubernetesGroupBean.getKubernetesMaster()));
+ kubernetesGroup.setPortRange(convertToASPortRange(kubernetesGroupBean.getPortRange()));
+ kubernetesGroup.setKubernetesHosts(convertToASKubernetesHostsPojo(kubernetesGroupBean.getKubernetesHosts()));
+ kubernetesGroup.setProperties((getASProperties(kubernetesGroupBean.getProperty())));
+
+ return kubernetesGroup;
+ }
+
+ private static org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost[] convertToASKubernetesHostsPojo(List<KubernetesHost> kubernetesHosts) {
+ if (kubernetesHosts == null || kubernetesHosts.isEmpty()) {
+ return null;
+ }
+ int kubernetesHostCount = kubernetesHosts.size();
+ org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost[]
+ kubernetesHostsArr = new org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost[kubernetesHostCount];
+ for (int i = 0; i < kubernetesHostCount; i++) {
+ KubernetesHost kubernetesHostBean = kubernetesHosts.get(i);
+ kubernetesHostsArr[i] = convertToASKubernetesHostPojo(kubernetesHostBean);
+ }
+ return kubernetesHostsArr;
+ }
+
+
+ private static org.apache.stratos.autoscaler.stub.kubernetes.PortRange convertToASPortRange(PortRange portRangeBean) {
+ if (portRangeBean == null) {
+ return null;
+ }
+ org.apache.stratos.autoscaler.stub.kubernetes.PortRange
+ portRange = new org.apache.stratos.autoscaler.stub.kubernetes.PortRange();
+ portRange.setLower(portRangeBean.getLower());
+ portRange.setUpper(portRangeBean.getUpper());
+ return portRange;
+ }
+
+ public static org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost convertToASKubernetesHostPojo(KubernetesHost kubernetesHostBean) {
+ if (kubernetesHostBean == null) {
+ return null;
+ }
+
+ org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost
+ kubernetesHost = new org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost();
+ kubernetesHost.setHostId(kubernetesHostBean.getHostId());
+ kubernetesHost.setHostIpAddress(kubernetesHostBean.getHostIpAddress());
+ kubernetesHost.setHostname(kubernetesHostBean.getHostname());
+ kubernetesHost.setProperties(getASProperties(kubernetesHostBean.getProperty()));
+
+ return kubernetesHost;
+ }
+
+ public static org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster convertToASKubernetesMasterPojo(KubernetesMaster kubernetesMasterBean) {
+ if (kubernetesMasterBean == null) {
+ return null;
+ }
+
+ org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster
+ kubernetesMaster = new org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster();
+ kubernetesMaster.setHostId(kubernetesMasterBean.getHostId());
+ kubernetesMaster.setHostIpAddress(kubernetesMasterBean.getHostIpAddress());
+ kubernetesMaster.setHostname(kubernetesMasterBean.getHostname());
+ kubernetesMaster.setEndpoint(kubernetesMasterBean.getEndpoint());
+ kubernetesMaster.setProperties(getASProperties(kubernetesMasterBean.getProperty()));
+
+ return kubernetesMaster;
+ }
+
+ public static KubernetesGroup[] populateKubernetesGroupsPojo(org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup[] kubernetesGroups) {
+
+ if (kubernetesGroups == null){
+ return null;
+ }
+ KubernetesGroup[] kubernetesGroupsBean = new KubernetesGroup[kubernetesGroups.length];
+ for (int i = 0; i < kubernetesGroups.length; i++){
+ kubernetesGroupsBean[i] = populateKubernetesGroupPojo(kubernetesGroups[i]);
+ }
+ return kubernetesGroupsBean;
+ }
+
+ public static KubernetesGroup populateKubernetesGroupPojo(org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup kubernetesGroup) {
+ if (kubernetesGroup == null){
+ return null;
+ }
+ KubernetesGroup kubernetesGroupBean = new KubernetesGroup();
+ kubernetesGroupBean.setGroupId(kubernetesGroup.getGroupId());
+ kubernetesGroupBean.setDescription(kubernetesGroup.getDescription());
+ kubernetesGroupBean.setPortRange(populatePortRangePojo(kubernetesGroup.getPortRange()));
+ kubernetesGroupBean.setKubernetesHosts(populateKubernetesHostsPojo(kubernetesGroup.getKubernetesHosts()));
+ kubernetesGroupBean.setKubernetesMaster(populateKubernetesMasterPojo(kubernetesGroup.getKubernetesMaster()));
+ kubernetesGroupBean.setProperty(populateASProperties(kubernetesGroup.getProperties()));
+ return kubernetesGroupBean;
+ }
+
+ public static KubernetesMaster populateKubernetesMasterPojo(org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster kubernetesMaster) {
+ if (kubernetesMaster == null){
+ return null;
+ }
+ KubernetesMaster kubernetesMasterBean = new KubernetesMaster();
+ kubernetesMasterBean.setHostId(kubernetesMaster.getHostId());
+ kubernetesMasterBean.setHostname(kubernetesMaster.getHostname());
+ kubernetesMasterBean.setHostIpAddress(kubernetesMaster.getHostIpAddress());
+ kubernetesMasterBean.setProperty(populateASProperties(kubernetesMaster.getProperties()));
+ kubernetesMasterBean.setEndpoint(kubernetesMaster.getEndpoint());
+ return kubernetesMasterBean;
+ }
+
+ public static List<KubernetesHost> populateKubernetesHostsPojo(org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost[] kubernetesHosts) {
+ if (kubernetesHosts == null){
+ return null;
+ }
+ List<KubernetesHost> kubernetesHostList = new ArrayList<KubernetesHost>();
+ for (int i = 0; i < kubernetesHosts.length; i++){
+ kubernetesHostList.add(populateKubernetesHostPojo(kubernetesHosts[i]));
+ }
+ return kubernetesHostList;
+ }
+
+ private static KubernetesHost populateKubernetesHostPojo(org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost kubernetesHost) {
+ if (kubernetesHost == null){
+ return null;
+ }
+ KubernetesHost kubernetesHostBean = new KubernetesHost();
+ kubernetesHostBean.setHostId(kubernetesHost.getHostId());
+ kubernetesHostBean.setHostname(kubernetesHost.getHostname());
+ kubernetesHostBean.setHostIpAddress(kubernetesHost.getHostIpAddress());
+ kubernetesHostBean.setProperty(populateASProperties(kubernetesHost.getProperties()));
+ return kubernetesHostBean;
+ }
+
+ private static List<PropertyBean> populateASProperties(PropertiesE properties) {
+ if (properties == null || properties.getProperties() == null){
+ return null;
+ }
+ List<PropertyBean> propertyBeanList = new ArrayList<PropertyBean>();
+ for (int i = 0; i < properties.getProperties().length; i++){
+ propertyBeanList.add(populateASProperty(properties.getProperties()[i]));
+ }
+ return propertyBeanList;
+ }
+
+ private static PropertyBean populateASProperty(PropertyE propertyE) {
+ if (propertyE == null){
+ return null;
+ }
+ PropertyBean propertyBean = new PropertyBean();
+ propertyBean.name = propertyE.getName();
+ propertyBean.value = propertyE.getValue();
+ return propertyBean;
+ }
+
+ private static PortRange populatePortRangePojo(org.apache.stratos.autoscaler.stub.kubernetes.PortRange portRange) {
+ if (portRange == null){
+ return null;
+ }
+ PortRange portRangeBean = new PortRange();
+ portRangeBean.setUpper(portRange.getUpper());
+ portRangeBean.setLower(portRange.getLower());
+ return portRangeBean;
+ }
+
+ private static Log log = LogFactory.getLog(PojoConverter.class);
+
+ public static ApplicationContext convertApplicationBeanToApplicationContext (ApplicationDefinition compositeAppDefinition) {
+
+ ApplicationContext applicationContext = new ApplicationContext();
+ applicationContext.setApplicationId(compositeAppDefinition.getApplicationId());
+ applicationContext.setAlias(compositeAppDefinition.getAlias());
+
+ // convert and set components
+ if (compositeAppDefinition.getComponents() != null) {
+ ComponentContext componentContext = new ComponentContext();
+ // top level subscribables
+ if (compositeAppDefinition.getComponents().getSubscribables() != null) {
+ componentContext.setSubscribableContexts(getSubscribableContextArrayFromSubscribableDefinitions(
+ compositeAppDefinition.getComponents().getSubscribables()));
+ }
+ // top level Groups
+ if (compositeAppDefinition.getComponents().getGroups() != null) {
+ componentContext.setGroupContexts(getgroupContextArrayFromGroupDefinitions(compositeAppDefinition.getComponents().getGroups()));
+ }
+ // top level dependency information
+ if (compositeAppDefinition.getComponents().getDependencies() != null) {
+ componentContext.setDependencyContext(getDependencyContextFromDependencyDefinition(compositeAppDefinition.getComponents().getDependencies()));
+ }
+
+ applicationContext.setComponents(componentContext);
+ }
+
+ // subscribable information
+ applicationContext.setSubscribableInfoContext(getSubscribableInfoContextArrFromSubscribableInfoDefinition(compositeAppDefinition.getSubscribableInfo()));
+
+ return applicationContext;
+ }
+
+ private static SubscribableInfoContext[] getSubscribableInfoContextArrFromSubscribableInfoDefinition (List<SubscribableInfo> subscribableInfos) {
+
+ SubscribableInfoContext[] subscribableInfoContexts = new SubscribableInfoContext[subscribableInfos.size()];
+ int i = 0;
+ for (SubscribableInfo subscribableInfo : subscribableInfos) {
+ SubscribableInfoContext subscribableInfoContext = new SubscribableInfoContext();
+ subscribableInfoContext.setAlias(subscribableInfo.getAlias());
+ subscribableInfoContext.setAutoscalingPolicy(subscribableInfo.getAutoscalingPolicy());
+ subscribableInfoContext.setDeploymentPolicy(subscribableInfo.getDeploymentPolicy());
+ subscribableInfoContext.setRepoUrl(subscribableInfo.getRepoUrl());
+ subscribableInfoContext.setPrivateRepo(subscribableInfo.isPrivateRepo());
+ subscribableInfoContext.setRepoUsername(subscribableInfo.getRepoUsername());
+ subscribableInfoContext.setRepoPassword(subscribableInfo.getRepoPassword());
+ subscribableInfoContext.setDependencyAliases(subscribableInfo.getDependencyAliases());
+ subscribableInfoContexts[i++] = subscribableInfoContext;
+
+ }
+
+ return subscribableInfoContexts;
+ }
+
+ private static DependencyContext getDependencyContextFromDependencyDefinition (DependencyDefinitions dependencyDefinitions) {
+
+ DependencyContext dependencyContext = new DependencyContext();
+ dependencyContext.setKillBehaviour(dependencyDefinitions.getKillBehaviour());
+
+ if (dependencyDefinitions != null && dependencyDefinitions.getStartupOrders() != null) {
+ String [] startupOrders = new String [dependencyDefinitions.getStartupOrders().size()];
+ startupOrders = dependencyDefinitions.getStartupOrders().toArray(startupOrders);
+ dependencyContext.setStartupOrdersContexts(startupOrders);
+ }
+
+ return dependencyContext;
+ }
+
+ private static GroupContext[] getgroupContextArrayFromGroupDefinitions (List<GroupDefinition> groupDefinitions) {
+
+ GroupContext[] groupContexts = new GroupContext[groupDefinitions.size()];
+ int i = 0;
+ for (GroupDefinition groupDefinition : groupDefinitions) {
+ GroupContext groupContext = new GroupContext();
+ groupContext.setName(groupDefinition.getName());
+ groupContext.setAlias(groupDefinition.getAlias());
+ groupContext.setDeploymentPolicy(groupDefinition.getDeploymentPolicy());
+ groupContext.setAutoscalingPolicy(groupDefinition.getAutoscalingPolicy());
+ // nested Subscribables
+ if (groupDefinition.getSubscribables() != null) {
+ groupContext.setSubscribableContexts(getSubscribableContextArrayFromSubscribableDefinitions(groupDefinition.getSubscribables()));
+ }
+ // nested Groups
+ if (groupDefinition.getSubGroups() != null) {
+ groupContext.setGroupContexts(getgroupContextArrayFromGroupDefinitions(groupDefinition.getSubGroups()));
+ }
+ groupContexts[i++] = groupContext;
+ }
+
+ return groupContexts;
+ }
+
+ private static SubscribableContext [] getSubscribableContextArrayFromSubscribableDefinitions(List<SubscribableDefinition> subscribableDefinitions) {
+
+ SubscribableContext[] subscribableContexts = new SubscribableContext[subscribableDefinitions.size()];
+ int i = 0;
+ for (SubscribableDefinition subscribableDefinition : subscribableDefinitions) {
+ SubscribableContext subscribableContext = new SubscribableContext();
+ subscribableContext.setType(subscribableDefinition.getType());
+ subscribableContext.setAlias(subscribableDefinition.getAlias());
+ subscribableContexts[i++] = subscribableContext;
+ }
+
+ return subscribableContexts;
+ }
+
+
+ public static ApplicationBean applicationToBean(Application application) {
+
+ if(application == null){
+ return null;
+ }
+
+ ApplicationBean applicationBean = new ApplicationBean();
+ applicationBean.setId(application.getUniqueIdentifier());
+ applicationBean.setTenantDomain(application.getTenantDomain());
+ applicationBean.setTenantAdminUsername(application.getTenantAdminUserName());
+ return applicationBean;
+ }
+
+ public static GroupBean toGroupBean(Group group) {
+ if(group == null){
+ return null;
+ }
+
+ GroupBean groupBean = new GroupBean();
+ groupBean.setAlias(group.getUniqueIdentifier());
+ groupBean.setDeploymentPolicy(group.getDeploymentPolicy());
+ groupBean.setAutoScalingPolicy(group.getAutoscalingPolicy());
+ return groupBean;
+ }
+
}