You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/11 06:12:47 UTC
[01/50] [abbrv] git commit: on start containers method,
do a label query and find the Pods being created and creating
corresponding MemberContexts.
Repository: stratos
Updated Branches:
refs/heads/master 869f818ff -> aa06b1a95
on start containers method, do a label query and find the Pods being created and creating corresponding MemberContexts.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/bb1daa70
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/bb1daa70
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/bb1daa70
Branch: refs/heads/master
Commit: bb1daa70a8b72440d8c83ecc5284d9f166c8b969
Parents: b2e614c
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 18:15:22 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:54 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 166 ++++++++++---------
1 file changed, 87 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/bb1daa70/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 18269e6..a413882 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -28,8 +28,9 @@ import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable
import org.apache.stratos.cloud.controller.concurrent.ThreadExecutor;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.exception.*;
-import org.apache.stratos.cloud.controller.functions.MemberContextToKubernetesService;
-import org.apache.stratos.cloud.controller.functions.MemberContextToReplicationController;
+import org.apache.stratos.cloud.controller.functions.ContainerClusterContextToKubernetesService;
+import org.apache.stratos.cloud.controller.functions.ContainerClusterContextToReplicationController;
+import org.apache.stratos.cloud.controller.functions.PodToMemberContext;
import org.apache.stratos.cloud.controller.interfaces.CloudControllerService;
import org.apache.stratos.cloud.controller.interfaces.Iaas;
import org.apache.stratos.cloud.controller.persist.Deserializer;
@@ -45,6 +46,8 @@ import org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidato
import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.kubernetes.client.KubernetesApiClient;
import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
+import org.apache.stratos.kubernetes.client.model.Label;
+import org.apache.stratos.kubernetes.client.model.Pod;
import org.apache.stratos.kubernetes.client.model.ReplicationController;
import org.apache.stratos.kubernetes.client.model.Service;
import org.apache.stratos.messaging.domain.topology.Member;
@@ -1330,33 +1333,32 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
@Override
- public MemberContext startContainers(MemberContext memberContext)
+ public MemberContext[] startContainers(ContainerClusterContext containerClusterContext)
throws UnregisteredCartridgeException {
if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:startContainer");
+ log.debug("CloudControllerServiceImpl:startContainers");
}
- if (memberContext == null) {
- String msg = "Instance start-up failed. Member is null.";
+ if (containerClusterContext == null) {
+ String msg = "Instance start-up failed. ContainerClusterContext is null.";
log.error(msg);
throw new IllegalArgumentException(msg);
}
- String clusterId = memberContext.getClusterId();
+ String clusterId = containerClusterContext.getClusterId();
if(log.isDebugEnabled()) {
- log.debug("Received an instance spawn request : " + memberContext.toString());
+ log.debug("Received an instance spawn request : " + containerClusterContext.toString());
}
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
if (ctxt == null) {
- String msg = "Instance start-up failed. Invalid cluster id. " + memberContext.toString();
+ String msg = "Instance start-up failed. Invalid cluster id. " + containerClusterContext.toString();
log.error(msg);
throw new IllegalArgumentException(msg);
}
-
String cartridgeType = ctxt.getCartridgeType();
Cartridge cartridge = dataHolder.getCartridge(cartridgeType);
@@ -1364,59 +1366,28 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (cartridge == null) {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType +". "+
- memberContext.toString();
+ containerClusterContext.toString();
log.error(msg);
throw new UnregisteredCartridgeException(msg);
}
- memberContext.setCartridgeType(cartridgeType);
-
try {
- // generating the Unique member ID...
- String memberID = generateMemberId(clusterId);
- memberContext.setMemberId(memberID);
-
- String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.KUBERNETES_CLUSTER_ID);
-
- if (kubernetesClusterId == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_CLUSTER_ID+"'. " + ctxt;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
-
- String kubernetesMasterIp = CloudControllerUtil.getProperty(memberContext.getProperties(),
- StratosConstants.KUBERNETES_MASTER_IP);
-
- if (kubernetesMasterIp == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_MASTER_IP+"'. " + memberContext;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
-
- String kubernetesPortRange = CloudControllerUtil.getProperty(memberContext.getProperties(),
- StratosConstants.KUBERNETES_PORT_RANGE);
-
- if (kubernetesPortRange == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_PORT_RANGE+"'. " + memberContext;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
+ validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
+ String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
+ String kubernetesMasterIp = validateProperty(StratosConstants.KUBERNETES_MASTER_IP, containerClusterContext);
+ String kubernetesPortRange = validateProperty(StratosConstants.KUBERNETES_PORT_RANGE, containerClusterContext);
KubernetesClusterContext kubClusterContext = getKubernetesClusterContext(kubernetesClusterId, kubernetesMasterIp, kubernetesPortRange);
KubernetesApiClient kubApi = kubClusterContext.getKubApi();
// first let's create a replication controller.
- MemberContextToReplicationController controllerFunction = new MemberContextToReplicationController();
- ReplicationController controller = controllerFunction.apply(memberContext);
+ ContainerClusterContextToReplicationController controllerFunction = new ContainerClusterContextToReplicationController();
+ ReplicationController controller = controllerFunction.apply(containerClusterContext);
if (log.isDebugEnabled()) {
log.debug("Cloud Controller is delegating request to start a replication controller "+controller+
- " for "+ memberContext + " to Kubernetes layer.");
+ " for "+ containerClusterContext + " to Kubernetes layer.");
}
kubApi.createReplicationController(controller);
@@ -1427,12 +1398,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
// secondly let's create a kubernetes service proxy to load balance these containers
- MemberContextToKubernetesService serviceFunction = new MemberContextToKubernetesService();
- Service service = serviceFunction.apply(memberContext);
+ ContainerClusterContextToKubernetesService serviceFunction = new ContainerClusterContextToKubernetesService();
+ Service service = serviceFunction.apply(containerClusterContext);
if (log.isDebugEnabled()) {
log.debug("Cloud Controller is delegating request to start a service "+service+
- " for "+ memberContext + " to Kubernetes layer.");
+ " for "+ containerClusterContext + " to Kubernetes layer.");
}
kubApi.createService(service);
@@ -1442,44 +1413,81 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ controller + " via Kubernetes layer.");
}
- memberContext.setPublicIpAddress(kubernetesMasterIp);
- memberContext.setPrivateIpAddress(kubernetesMasterIp);
- memberContext.setProperties(CloudControllerUtil.addProperty(memberContext
- .getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
- CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
- dataHolder.addMemberContext(memberContext);
-
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+ // execute the label query
+ Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+ List<MemberContext> memberContexts = new ArrayList<MemberContext>();
+
+ PodToMemberContext podToMemberContextFunc = new PodToMemberContext();
+ // generate Member Contexts
+ for (Pod pod : newlyCreatedPods) {
+ MemberContext context = podToMemberContextFunc.apply(pod);
+ context.setCartridgeType(cartridgeType);
+ context.setClusterId(clusterId);
+
+ context.setProperties(CloudControllerUtil.addProperty(containerClusterContext
+ .getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
+ CloudControllerUtil.getProperty(ctxt.getProperties(),
+ StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
+ dataHolder.addMemberContext(context);
+
+ // trigger topology
+ // update the topology with the newly spawned member
+ TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
+ kubernetesMasterIp, kubernetesMasterIp, context);
+ // publish data
+ // TODO
+// CartridgeInstanceDataPublisher.publish(context.getMemberId(), null, null, context.getClusterId(), cartridgeType, MemberStatus.Created.toString(), node);
+
+ memberContexts.add(context);
+ }
+
// persist in registry
persist();
- // trigger topology
- // update the topology with the newly spawned member
- TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
- kubernetesMasterIp, kubernetesMasterIp, memberContext);
-
- // publish data
- // TODO
- // CartridgeInstanceDataPublisher.publish(memberID,
- // memberContext.getPartition().getId(),
- // memberContext.getNetworkPartitionId(),
- // memberContext.getClusterId(),
- // cartridgeType,
- // MemberStatus.Created.toString(),
- // node);
+ log.info("Kubernetes entities are successfully starting up. "+containerClusterContext.toString());
- log.info("Kubernetes entities are successfully starting up. "+memberContext.toString());
-
- return memberContext;
+ return memberContexts.toArray(new MemberContext[0]);
} catch (Exception e) {
- String msg = "Failed to start an instance. " + memberContext.toString()+" Cause: "+e.getMessage();
+ String msg = "Failed to start an instance. " + containerClusterContext.toString()+" Cause: "+e.getMessage();
log.error(msg, e);
throw new IllegalStateException(msg, e);
}
}
- private KubernetesClusterContext getKubernetesClusterContext(
+ private String validateProperty(String property, ClusterContext ctxt) {
+
+ String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+
+ if (propVal == null) {
+ String msg = "Instance start-up failed. Cannot find '"+
+ StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
+ log.error(msg);
+ throw new IllegalArgumentException(msg);
+ }
+
+ return propVal;
+ }
+
+ private String validateProperty(String property, ContainerClusterContext ctxt) {
+
+ String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+
+ if (propVal == null) {
+ String msg = "Instance start-up failed. Cannot find '"+
+ StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
+ log.error(msg);
+ throw new IllegalArgumentException(msg);
+ }
+
+ return propVal;
+
+ }
+
+ private KubernetesClusterContext getKubernetesClusterContext(
String kubernetesClusterId, String kubernetesMasterIp,
String kubernetesPortRange) {
[09/50] [abbrv] git commit: Need to wait a bit before executing the
label query.
Posted by ni...@apache.org.
Need to wait a bit before executing the label query.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/b14a5c07
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/b14a5c07
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/b14a5c07
Branch: refs/heads/master
Commit: b14a5c075a7d2eda8dc2fbf4fda7570b63da9958
Parents: 08cd01b
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:05:04 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../controller/impl/CloudControllerServiceImpl.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/b14a5c07/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index a413882..4042140 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1413,11 +1413,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ controller + " via Kubernetes layer.");
}
+ // needs to wait few seconds before running label queries
+ Thread.sleep(3000);
+
// create a label query
Label l = new Label();
l.setName(clusterId);
// execute the label query
Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+
+ if (log.isDebugEnabled()) {
+
+ log.debug(String.format("Pods created : %s for cluster : %s",newlyCreatedPods.length, clusterId));
+ }
+
List<MemberContext> memberContexts = new ArrayList<MemberContext>();
PodToMemberContext podToMemberContextFunc = new PodToMemberContext();
@@ -1447,7 +1456,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// persist in registry
persist();
- log.info("Kubernetes entities are successfully starting up. "+containerClusterContext.toString());
+ log.info("Kubernetes entities are successfully starting up. "+memberContexts);
return memberContexts.toArray(new MemberContext[0]);
[24/50] [abbrv] git commit: Initialize member properties.
Posted by ni...@apache.org.
Initialize member properties.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/78497e8d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/78497e8d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/78497e8d
Branch: refs/heads/master
Commit: 78497e8d4ad0b99e8d71d08348d8c9bcf16a1c94
Parents: 90c37ec
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:19:20 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../apache/stratos/cloud/controller/pojo/MemberContext.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/78497e8d/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
index ec67b46..72b4914 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
@@ -60,9 +60,16 @@ public class MemberContext implements Serializable {
this.memberId = id;
this.clusterId = clusterId;
this.setPartition(partition);
+ init();
}
public MemberContext() {
+ init();
+ }
+
+ private void init() {
+ this.properties = new Properties();
+ this.properties.setProperties(new Property[0]);
}
public String getMemberId() {
[31/50] [abbrv] Updating CC wsdl based on the latest API changes.
Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/stratos/blob/192228ed/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
----------------------------------------------------------------------
diff --git a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
index f8de82f..eb8c819 100644
--- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
+++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
@@ -3,1176 +3,1196 @@
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://util.java/xsd">
<xs:complexType name="Properties">
- <xs:sequence></xs:sequence>
+ <xs:sequence/>
</xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://exception.controller.cloud.stratos.apache.org/xsd">
<xs:complexType name="InvalidPartitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeTypeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="InvalidClusterException">
+ <xs:complexType name="UnregisteredCartridgeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UnregisteredClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidMemberException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="UnregisteredCartridgeException">
+ <xs:complexType name="InvalidClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidIaasProviderException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeDefinitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:ax221="http://exception.controller.cloud.stratos.apache.org/xsd" xmlns:ax227="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:ax225="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
- <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"></xs:import>
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
<xs:element name="CloudControllerServiceInvalidPartitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax220:InvalidPartitionException"></xs:element>
+ <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax220:InvalidPartitionException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartitionResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeTypeException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax220:InvalidCartridgeTypeException"></xs:element>
+ <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax220:InvalidCartridgeTypeException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicy">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax222:Partition"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax222:Partition"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicyResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="CloudControllerServiceInvalidClusterException">
+ <xs:element name="CloudControllerServiceUnregisteredCartridgeException">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax220:UnregisteredCartridgeException"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="updateContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax220:InvalidClusterException"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="replicas" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="updateKubernetesController">
+ <xs:element name="updateContainersResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="replicas" type="xs:int"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceUnregisteredClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax220:UnregisteredClusterException"></xs:element>
+ <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax220:UnregisteredClusterException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterDockerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="undeployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidMemberException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax220:InvalidMemberException"></xs:element>
+ <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax220:InvalidMemberException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="terminateAllInstances">
+ <xs:element name="CloudControllerServiceInvalidClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax220:InvalidClusterException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="terminateAllContainers">
+ <xs:element name="terminateAllInstances">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="CloudControllerServiceUnregisteredCartridgeException">
+ <xs:element name="terminateAllContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax220:UnregisteredCartridgeException"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidIaasProviderException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax220:InvalidIaasProviderException"></xs:element>
+ <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax220:InvalidIaasProviderException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax223:MemberContext"></xs:element>
+ <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax223:MemberContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstanceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="containerClusterContext" nillable="true" type="ax223:ContainerClusterContext"></xs:element>
+ <xs:element minOccurs="0" name="containerClusterContext" nillable="true" type="ax223:ContainerClusterContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainersResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="registrant" nillable="true" type="ax223:Registrant"></xs:element>
+ <xs:element minOccurs="0" name="registrant" nillable="true" type="ax223:Registrant"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerServiceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridges">
<xs:complexType>
- <xs:sequence></xs:sequence>
+ <xs:sequence/>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridgesResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContext">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContextResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:ClusterContext"></xs:element>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:ClusterContext"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfo">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfoResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:CartridgeInfo"></xs:element>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:CartridgeInfo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeDefinitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax220:InvalidCartridgeDefinitionException"></xs:element>
+ <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax220:InvalidCartridgeDefinitionException"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax223:CartridgeConfig"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax223:CartridgeConfig"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema xmlns:ax229="http://util.java/xsd" xmlns:ax226="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://pojo.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
- <xs:import namespace="http://util.java/xsd"></xs:import>
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:import namespace="http://util.java/xsd"/>
<xs:complexType name="Properties">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Property">
<xs:sequence>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MemberContext">
<xs:sequence>
- <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="initTime" type="xs:long"></xs:element>
- <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
- <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="initTime" type="xs:long"/>
+ <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"/>
+ <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ContainerClusterContext">
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Registrant">
<xs:sequence>
- <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Persistence">
<xs:sequence>
- <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
+ <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Volume">
<xs:sequence>
- <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="size" type="xs:int"></xs:element>
- <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="size" type="xs:int"/>
+ <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClusterContext">
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax229:Properties"></xs:element>
- <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"></xs:element>
- <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax229:Properties"/>
+ <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"/>
+ <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeInfo">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax223:AppType"></xs:element>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax223:AppType"/>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"/>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"/>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AppType">
<xs:sequence>
- <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoadbalancerConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PortMapping">
<xs:sequence>
- <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="container" nillable="true" type="ax223:Container"></xs:element>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax223:IaasConfig"></xs:element>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="container" nillable="true" type="ax223:Container"/>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax223:IaasConfig"/>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"/>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Container">
<xs:sequence>
- <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"></xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IaasConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"></xs:element>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterfaces"></xs:element>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"/>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterfaces"/>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterfaces">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterface"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterface"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterface">
<xs:sequence>
- <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:ax224="http://pojo.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
<xs:complexType name="Partition">
<xs:sequence>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
- <xs:element minOccurs="0" name="partitionMax" type="xs:int"></xs:element>
- <xs:element minOccurs="0" name="partitionMin" type="xs:int"></xs:element>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="partitionMax" type="xs:int"/>
+ <xs:element minOccurs="0" name="partitionMin" type="xs:int"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="validatePartitionRequest">
- <wsdl:part name="parameters" element="ns:validatePartition"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:validatePartition"/>
</wsdl:message>
<wsdl:message name="validatePartitionResponse">
- <wsdl:part name="parameters" element="ns:validatePartitionResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:validatePartitionResponse"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidPartitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"/>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyRequest">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"/>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyResponse">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidCartridgeTypeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:message>
<wsdl:message name="startContainersRequest">
- <wsdl:part name="parameters" element="ns:startContainers"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:startContainers"/>
</wsdl:message>
<wsdl:message name="startContainersResponse">
- <wsdl:part name="parameters" element="ns:startContainersResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:startContainersResponse"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceUnregisteredCartridgeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:message>
<wsdl:message name="terminateInstanceRequest">
- <wsdl:part name="parameters" element="ns:terminateInstance"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:terminateInstance"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidMemberException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"/>
</wsdl:message>
<wsdl:message name="registerServiceRequest">
- <wsdl:part name="parameters" element="ns:registerService"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:registerService"/>
</wsdl:message>
<wsdl:message name="registerServiceResponse">
- <wsdl:part name="parameters" element="ns:registerServiceResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:registerServiceResponse"/>
</wsdl:message>
<wsdl:message name="deployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"/>
</wsdl:message>
- <wsdl:message name="deployCartridgeDefinitionResponse"></wsdl:message>
+ <wsdl:message name="deployCartridgeDefinitionResponse"/>
<wsdl:message name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidIaasProviderException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"/>
</wsdl:message>
<wsdl:message name="getCartridgeInfoRequest">
- <wsdl:part name="parameters" element="ns:getCartridgeInfo"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfo"/>
</wsdl:message>
<wsdl:message name="getCartridgeInfoResponse">
- <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"/>
</wsdl:message>
<wsdl:message name="terminateAllContainersRequest">
- <wsdl:part name="parameters" element="ns:terminateAllContainers"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:terminateAllContainers"/>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"/>
</wsdl:message>
<wsdl:message name="unregisterServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterService"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:unregisterService"/>
</wsdl:message>
- <wsdl:message name="unregisterServiceResponse"></wsdl:message>
+ <wsdl:message name="unregisterServiceResponse"/>
<wsdl:message name="CloudControllerServiceUnregisteredClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"/>
</wsdl:message>
<wsdl:message name="undeployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"/>
</wsdl:message>
- <wsdl:message name="undeployCartridgeDefinitionResponse"></wsdl:message>
+ <wsdl:message name="undeployCartridgeDefinitionResponse"/>
<wsdl:message name="terminateAllInstancesRequest">
- <wsdl:part name="parameters" element="ns:terminateAllInstances"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:terminateAllInstances"/>
</wsdl:message>
<wsdl:message name="unregisterDockerServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterDockerService"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:unregisterDockerService"/>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesRequest">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridges"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridges"/>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesResponse">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"/>
</wsdl:message>
<wsdl:message name="startInstanceRequest">
- <wsdl:part name="parameters" element="ns:startInstance"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:startInstance"/>
</wsdl:message>
<wsdl:message name="startInstanceResponse">
- <wsdl:part name="parameters" element="ns:startInstanceResponse"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:startInstanceResponse"/>
+ </wsdl:message>
+ <wsdl:message name="updateContainersRequest">
+ <wsdl:part name="parameters" element="ns:updateContainers"/>
+ </wsdl:message>
+ <wsdl:message name="updateContainersResponse">
+ <wsdl:part name="parameters" element="ns:updateContainersResponse"/>
</wsdl:message>
<wsdl:message name="getClusterContextRequest">
- <wsdl:part name="parameters" element="ns:getClusterContext"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getClusterContext"/>
</wsdl:message>
<wsdl:message name="getClusterContextResponse">
- <wsdl:part name="parameters" element="ns:getClusterContextResponse"></wsdl:part>
- </wsdl:message>
- <wsdl:message name="updateKubernetesControllerRequest">
- <wsdl:part name="parameters" element="ns:updateKubernetesController"></wsdl:part>
+ <wsdl:part name="parameters" element="ns:getClusterContextResponse"/>
</wsdl:message>
<wsdl:portType name="CloudControllerServicePortType">
<wsdl:operation name="validatePartition">
- <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"></wsdl:input>
- <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"></wsdl:fault>
+ <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"/>
+ <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"/>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"></wsdl:input>
- <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"></wsdl:fault>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
+ <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"/>
+ <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"></wsdl:input>
- <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
+ <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"/>
+ <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"></wsdl:input>
- <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"></wsdl:fault>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
+ <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:operation>
<wsdl:operation name="registerService">
- <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"></wsdl:input>
- <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
+ <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"/>
+ <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"></wsdl:input>
- <wsdl:output message="ns:deployCartridgeDefinitionResponse" wsaw:Action="urn:deployCartridgeDefinitionResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:fault>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
+ <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"/>
+ <wsdl:output message="ns:deployCartridgeDefinitionResponse" wsaw:Action="urn:deployCartridgeDefinitionResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"/>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"></wsdl:input>
- <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
+ <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"/>
+ <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"></wsdl:input>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"></wsdl:fault>
+ <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"/>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"></wsdl:input>
- <wsdl:output message="ns:unregisterServiceResponse" wsaw:Action="urn:unregisterServiceResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
+ <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"/>
+ <wsdl:output message="ns:unregisterServiceResponse" wsaw:Action="urn:unregisterServiceResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"/>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"></wsdl:input>
- <wsdl:output message="ns:undeployCartridgeDefinitionResponse" wsaw:Action="urn:undeployCartridgeDefinitionResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
+ <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"/>
+ <wsdl:output message="ns:undeployCartridgeDefinitionResponse" wsaw:Action="urn:undeployCartridgeDefinitionResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"></wsdl:input>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"></wsdl:fault>
+ <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"/>
</wsdl:operation>
<wsdl:operation name="unregisterDockerService">
- <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"></wsdl:input>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
+ <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"/>
</wsdl:operation>
<wsdl:operation name="getRegisteredCartridges">
- <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"></wsdl:input>
- <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"></wsdl:output>
+ <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"/>
+ <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"/>
</wsdl:operation>
<wsdl:operation name="startInstance">
- <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"></wsdl:input>
- <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"></wsdl:output>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
+ <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"/>
+ <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"/>
</wsdl:operation>
- <wsdl:operation name="getClusterContext">
- <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"></wsdl:input>
- <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"></wsdl:output>
+ <wsdl:operation name="updateContainers">
+ <wsdl:input message="ns:updateContainersRequest" wsaw:Action="urn:updateContainers"/>
+ <wsdl:output message="ns:updateContainersResponse" wsaw:Action="urn:updateContainersResponse"/>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:updateContainersCloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:operation>
- <wsdl:operation name="updateKubernetesController">
- <wsdl:input message="ns:updateKubernetesControllerRequest" wsaw:Action="urn:updateKubernetesController"></wsdl:input>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:updateKubernetesControllerCloudControllerServiceInvalidClusterException"></wsdl:fault>
+ <wsdl:operation name="getClusterContext">
+ <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"/>
+ <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CloudControllerServiceSoap11Binding" type="ns:CloudControllerServicePortType">
- <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="validatePartition">
- <soap:operation soapAction="urn:validatePartition" style="document"></soap:operation>
+ <soap:operation soapAction="urn:validatePartition" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"></soap:operation>
+ <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <soap:operation soapAction="urn:terminateInstance" style="document"></soap:operation>
+ <soap:operation soapAction="urn:terminateInstance" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidMemberException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"/>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <soap:operation soapAction="urn:startContainers" style="document"></soap:operation>
+ <soap:operation soapAction="urn:startContainers" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="registerService">
- <soap:operation soapAction="urn:registerService" style="document"></soap:operation>
+ <soap:operation soapAction="urn:registerService" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap:operation>
+ <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"/>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidIaasProviderException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <soap:operation soapAction="urn:getCartridgeInfo" style="document"></soap:operation>
+ <soap:operation soapAction="urn:getCartridgeInfo" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <soap:operation soapAction="urn:terminateAllContainers" style="document"></soap:operation>
+ <soap:operation soapAction="urn:terminateAllContainers" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <soap:operation soapAction="urn:unregisterService" style="document"></soap:operation>
+ <soap:operation soapAction="urn:unregisterService" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"></soap:operation>
+ <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <soap:operation soapAction="urn:terminateAllInstances" style="document"></soap:operation>
+ <soap:operation soapAction="urn:terminateAllInstances" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getRegisteredCartridges">
- <soap:operation soapAction="urn:getRegisteredCartridges" style="document"></soap:operation>
+ <soap:operation soapAction="urn:getRegisteredCartridges" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="unregisterDockerService">
- <soap:operation soapAction="urn:unregisterDockerService" style="document"></soap:operation>
+ <soap:operation soapAction="urn:unregisterDockerService" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startInstance">
- <soap:operation soapAction="urn:startInstance" style="document"></soap:operation>
+ <soap:operation soapAction="urn:startInstance" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidIaasProviderException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"/>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getClusterContext">
- <soap:operation soapAction="urn:getClusterContext" style="document"></soap:operation>
+ <soap:operation soapAction="urn:getClusterContext" style="document"/>
<wsdl:input>
- <soap:body use="literal"></soap:body>
+ <soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"></soap:body>
+ <so
<TRUNCATED>
[15/50] [abbrv] git commit: making drool files as arguments to
AutoscalerRuleEvaluator
Posted by ni...@apache.org.
making drool files as arguments to AutoscalerRuleEvaluator
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7b0cf721
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7b0cf721
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7b0cf721
Branch: refs/heads/master
Commit: 7b0cf721b11037166033fbd998eb53cd3c63af23
Parents: 6e0eca9
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:55:15 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../KubernetesServiceClusterMonitor.java | 54 +++++++++++++++++++-
.../autoscaler/monitor/VMLbClusterMonitor.java | 6 ++-
.../monitor/VMServiceClusterMonitor.java | 5 +-
.../rule/AutoscalerRuleEvaluator.java | 24 +++++----
4 files changed, 75 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/7b0cf721/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index 6362fc4..d0d7668 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -52,7 +52,10 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
String serviceClusterID, String serviceId,
AutoscalePolicy autoscalePolicy) {
super(serviceClusterID, serviceId, kubernetesClusterCtxt,
- new AutoscalerRuleEvaluator(), autoscalePolicy);
+ new AutoscalerRuleEvaluator(
+ StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE,
+ StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE),
+ autoscalePolicy);
readConfigurations();
}
@@ -144,9 +147,56 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
} catch (InterruptedException ignored) {
}
}
+
+ minCheck();
+ scaleCheck();
}
- @Override
+ private void scaleCheck() {
+ boolean rifReset = getKubernetesClusterCtxt().isRifReset();
+ boolean memoryConsumptionReset = getKubernetesClusterCtxt().isMemoryConsumptionReset();
+ boolean loadAverageReset = getKubernetesClusterCtxt().isLoadAverageReset();
+ if (log.isDebugEnabled()) {
+ log.debug("flag of rifReset : " + rifReset
+ + " flag of memoryConsumptionReset : "
+ + memoryConsumptionReset + " flag of loadAverageReset : "
+ + loadAverageReset);
+ }
+ String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID();
+ String clusterId = getClusterId();
+ if (rifReset || memoryConsumptionReset || loadAverageReset) {
+ getScaleCheckKnowledgeSession().setGlobal("clusterId", clusterId);
+ getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", autoscalePolicy);
+ getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
+ getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
+ getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format(
+ "Running scale check for kub-cluster %s ", kubernetesClusterID));
+ }
+ scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(
+ getScaleCheckKnowledgeSession(), scaleCheckFactHandle, getKubernetesClusterCtxt());
+ getKubernetesClusterCtxt().setRifReset(false);
+ getKubernetesClusterCtxt().setMemoryConsumptionReset(false);
+ getKubernetesClusterCtxt().setLoadAverageReset(false);
+ } else if (log.isDebugEnabled()) {
+ log.debug(String.format("Scale check will not run since none of the statistics have not received yet for "
+ + "[kub-cluster] %s [cluster] %s", kubernetesClusterID, clusterId));
+ }
+ }
+
+ private void minCheck() {
+ getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running minimum check for cluster %s ",
+ getClusterId()));
+ }
+ minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(
+ getMinCheckKnowledgeSession(), minCheckFactHandle,
+ getKubernetesClusterCtxt());
+ }
+
+ @Override
public void destroy() {
getMinCheckKnowledgeSession().dispose();
getScaleCheckKnowledgeSession().dispose();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7b0cf721/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
index 1c27380..8e7d0e1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
@@ -34,6 +34,7 @@ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.autoscaler.util.ConfUtil;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
@@ -48,7 +49,10 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
public VMLbClusterMonitor(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy,
AutoscalePolicy autoscalePolicy) {
- super(clusterId, serviceId, new AutoscalerRuleEvaluator(),
+ super(clusterId, serviceId,
+ new AutoscalerRuleEvaluator(
+ StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
deploymentPolicy, autoscalePolicy,
new ConcurrentHashMap<String, NetworkPartitionContext>());
readConfigurations();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7b0cf721/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
index 6f9fb26..adf750d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
@@ -35,6 +35,7 @@ import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
import org.apache.stratos.cloud.controller.stub.pojo.Properties;
import org.apache.stratos.cloud.controller.stub.pojo.Property;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
/**
@@ -51,7 +52,9 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
public VMServiceClusterMonitor(String clusterId, String serviceId,
DeploymentPolicy deploymentPolicy,
AutoscalePolicy autoscalePolicy) {
- super(clusterId, serviceId, new AutoscalerRuleEvaluator(),
+ super(clusterId, serviceId,
+ new AutoscalerRuleEvaluator(StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
deploymentPolicy, autoscalePolicy,
new ConcurrentHashMap<String, NetworkPartitionContext>());
readConfigurations();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7b0cf721/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
index 4bf9207..a402ab4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
@@ -44,32 +44,36 @@ public class AutoscalerRuleEvaluator {
private static final Log log = LogFactory.getLog(AutoscalerRuleEvaluator.class);
- private static final String DRL_FILE_NAME = "mincheck.drl";
- private static final String SCALING_DRL_FILE_NAME = "scaling.drl";
- private static final String TERMINATE_ALL_DRL_FILE_NAME = "terminateall.drl";
+ //vm drool files as default
+ private String minCheckDroolFileName = "mincheck.drl";
+ private String scaleCheckDroolFileName = "scaling.drl";
+ private String terminateAllDroolFileName = "terminateall.drl";
private static KnowledgeBase minCheckKbase;
private static KnowledgeBase scaleCheckKbase;
@SuppressWarnings("unused")
private static KnowledgeBase terminateAllKbase;
- public AutoscalerRuleEvaluator(){
+ public AutoscalerRuleEvaluator(String minCheckDroolFileName, String scaleCheckDroolFileName){
+
+ this.minCheckDroolFileName = minCheckDroolFileName;
+ this.scaleCheckDroolFileName = scaleCheckDroolFileName;
- minCheckKbase = readKnowledgeBase(DRL_FILE_NAME);
+ minCheckKbase = readKnowledgeBase(this.minCheckDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Minimum check rule is parsed successfully");
+ log.debug("Minimum check rule is parsed successfully : " + this.minCheckDroolFileName);
}
- scaleCheckKbase = readKnowledgeBase(SCALING_DRL_FILE_NAME);
+ scaleCheckKbase = readKnowledgeBase(this.scaleCheckDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Scale check rule is parsed successfully");
+ log.debug("Scale check rule is parsed successfully : " + this.scaleCheckDroolFileName);
}
- terminateAllKbase = readKnowledgeBase(TERMINATE_ALL_DRL_FILE_NAME);
+ terminateAllKbase = readKnowledgeBase(this.terminateAllDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Terminate all rule is parsed successfully");
+ log.debug("Terminate all rule is parsed successfully : " + this.terminateAllDroolFileName);
}
}
[05/50] [abbrv] git commit: Setting init time for the Member.
Posted by ni...@apache.org.
Setting init time for the Member.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5e4c7c19
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5e4c7c19
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5e4c7c19
Branch: refs/heads/master
Commit: 5e4c7c191da59ae373721b35d0ef3eec484ce389
Parents: ee8a1b6
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:54:48 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/functions/PodToMemberContext.java | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/5e4c7c19/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
index a1eb1a4..29987cc 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
@@ -38,6 +38,7 @@ public class PodToMemberContext implements Function<Pod, MemberContext> {
memberContext.setMemberId(pod.getId());
memberContext.setPrivateIpAddress(pod.getCurrentState().getHostIP());
memberContext.setPublicIpAddress(pod.getCurrentState().getHostIP());
+ memberContext.setInitTime(System.currentTimeMillis());
return memberContext;
}
[33/50] [abbrv] git commit: Implement terminateContainer API passing
a member ID.
Posted by ni...@apache.org.
Implement terminateContainer API passing a member ID.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6e0efc0c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6e0efc0c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6e0efc0c
Branch: refs/heads/master
Commit: 6e0efc0cda0e6b14c113e173ca7712ac91cf66a7
Parents: 98ccb70
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 09:48:19 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../exception/InvalidIaasProviderException.java | 2 -
.../impl/CloudControllerServiceImpl.java | 51 ++++++++++++++++++++
.../interfaces/CloudControllerService.java | 8 +++
3 files changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6e0efc0c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidIaasProviderException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidIaasProviderException.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidIaasProviderException.java
index 6f7994e..77f727e 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidIaasProviderException.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidIaasProviderException.java
@@ -18,8 +18,6 @@
*/
package org.apache.stratos.cloud.controller.exception;
-import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-
/**
* Throws when a {@link IaasProvider} is evaluated to be invalid.
* @author nirmal
http://git-wip-us.apache.org/repos/asf/stratos/blob/6e0efc0c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index a3fed80..be8702b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1755,5 +1755,56 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
}
+ @Override
+ public void terminateContainer(String memberId) throws MemberTerminationFailedException {
+
+ handleNullObject(memberId, "Failed to terminate member. Invalid Member id. [Member id] " + memberId);
+
+ MemberContext memberContext = dataHolder.getMemberContextOfMemberId(memberId);
+
+ handleNullObject(memberContext, "Failed to terminate member. Member id not found. [Member id] " + memberId);
+
+ String clusterId = memberContext.getClusterId();
+
+ handleNullObject(clusterId, "Failed to terminate member. Cluster id is null. [Member id] " + memberId);
+
+ ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
+
+ handleNullObject(ctxt,
+ String.format("Failed to terminate member [Member id] %s. Invalid cluster id %s ", memberId, clusterId));
+
+ String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
+ StratosConstants.KUBERNETES_CLUSTER_ID);
+
+ handleNullObject(kubernetesClusterId, String.format("Failed to terminate member [Member id] %s. Cannot find '"+
+ StratosConstants.KUBERNETES_CLUSTER_ID+"' in [cluster context] %s ", memberId, ctxt));
+
+ KubernetesClusterContext kubClusterContext = dataHolder.getKubernetesClusterContext(kubernetesClusterId);
+
+ handleNullObject(kubClusterContext, String.format("Failed to terminate member [Member id] %s. Cannot find a matching Kubernetes Cluster in [cluster context] %s ", memberId, ctxt));
+
+ KubernetesApiClient kubApi = kubClusterContext.getKubApi();
+ // delete the Pod
+ try {
+ // member id = pod id
+ kubApi.deletePod(memberId);
+
+ dataHolder.removeMemberContext(memberId, clusterId);
+ // persist
+ persist();
+ } catch (KubernetesClientException e) {
+ String msg = String.format("Failed to terminate member [Member id] %s", memberId);
+ log.error(msg, e);
+ throw new MemberTerminationFailedException(msg, e);
+ }
+ }
+
+ private void handleNullObject(Object obj, String errorMsg) {
+ if (obj == null) {
+ log.error(errorMsg);
+ throw new IllegalArgumentException(errorMsg);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/6e0efc0c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index 7117c1c..398467c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -25,6 +25,7 @@ import org.apache.stratos.cloud.controller.exception.InvalidClusterException;
import org.apache.stratos.cloud.controller.exception.InvalidIaasProviderException;
import org.apache.stratos.cloud.controller.exception.InvalidMemberException;
import org.apache.stratos.cloud.controller.exception.InvalidPartitionException;
+import org.apache.stratos.cloud.controller.exception.MemberTerminationFailedException;
import org.apache.stratos.cloud.controller.exception.UnregisteredCartridgeException;
import org.apache.stratos.cloud.controller.exception.UnregisteredClusterException;
import org.apache.stratos.cloud.controller.pojo.*;
@@ -137,6 +138,13 @@ public interface CloudControllerService {
void terminateAllContainers(String clusterId) throws InvalidClusterException;
/**
+ * Terminate a given member/Kubernetes Pod.
+ * @param memberId member/Pod id to be terminated.
+ * @throws MemberTerminationFailedException
+ */
+ void terminateContainer(String memberId) throws MemberTerminationFailedException;
+
+ /**
* Update the Kubernetes controller created for the given cluster with the specified number of replicas.
* @param clusterId id of the subjected cluster.
* @param replicas total number of replicas to be set to the controller.
[04/50] [abbrv] git commit: Bundling kubernetes client as an OSGi
bundle to CC feature.
Posted by ni...@apache.org.
Bundling kubernetes client as an OSGi bundle to CC feature.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6780187a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6780187a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6780187a
Branch: refs/heads/master
Commit: 6780187a90c64174419ad58402d036c4a4c3ec0d
Parents: b14a5c0
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:06:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../pom.xml | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6780187a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
----------------------------------------------------------------------
diff --git a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
index c2e08af..253a8b9 100644
--- a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
+++ b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
@@ -38,6 +38,21 @@
<artifactId>org.apache.stratos.cloud.controller</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.stratos</groupId>
+ <artifactId>org.apache.stratos.kubernetes.client</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.wso2</groupId>
+ <artifactId>httpcore</artifactId>
+ <version>4.3.0.wso2v1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.wso2</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.2.5.wso2v1</version>
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
@@ -273,6 +288,8 @@
<bundles>
<bundleDef>org.apache.stratos:org.apache.stratos.cloud.controller:${project.version}
</bundleDef>
+ <bundleDef>org.apache.stratos:org.apache.stratos.kubernetes.client:${project.version}
+ </bundleDef>
<bundleDef>org.apache.jclouds.driver:jclouds-bouncycastle:${jclouds.version}</bundleDef>
<bundleDef>org.apache.jclouds.driver:jclouds-sshj:${jclouds.version}</bundleDef>
<!--bundleDef>org.apache.jclouds.driver:jclouds-log4j:${jclouds.version}</bundleDef-->
@@ -327,6 +344,8 @@
</bundleDef>
<bundleDef>jdom.wso2:jdom:1.0.0.wso2v1</bundleDef>
<bundleDef>org.json.wso2:json:1.0.0.wso2v1</bundleDef>
+ <bundleDef>org.apache.httpcomponents.wso2:httpcore:4.3.0.wso2v1</bundleDef>
+ <bundleDef>org.apache.httpcomponents.wso2:httpclient:4.2.5.wso2v1</bundleDef>
<!--bundleDef>org.jaggeryjs:0.9.0.ALPHA2-wso2v2</bundleDef-->
<bundleDef>org.apache.jclouds.api:sts:${jclouds.version}</bundleDef>
<bundleDef>javax.ws.rs:jsr311-api:1.1.1</bundleDef>
[39/50] [abbrv] git commit: Changes to member context removal logic.
Posted by ni...@apache.org.
Changes to member context removal logic.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e3d528fb
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e3d528fb
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e3d528fb
Branch: refs/heads/master
Commit: e3d528fba197536c62b076d51705f497f719ffc6
Parents: 8f9148d
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:48:30 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../runtime/FasterLookUpDataHolder.java | 69 +++++++++++++++-----
1 file changed, 51 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/e3d528fb/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
index a8c47ce..2a83908 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
@@ -32,6 +32,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledFuture;
/**
* This object holds all runtime data and provides faster access. This is a Singleton class.
@@ -60,6 +61,12 @@ public class FasterLookUpDataHolder implements Serializable{
private Map<String, MemberContext> memberIdToContext = new ConcurrentHashMap<String, MemberContext>();
/**
+ * Key - member id
+ * Value - ScheduledFuture task
+ */
+ private transient Map<String, ScheduledFuture<?>> memberIdToScheduledTask = new ConcurrentHashMap<String, ScheduledFuture<?>>();
+
+ /**
* Key - Kubernetes cluster id
* Value - {@link KubernetesClusterContext}
*/
@@ -278,42 +285,60 @@ public class FasterLookUpDataHolder implements Serializable{
}
}
- public void removeMemberContextsOfCluster(String clusterId) {
+ public void addScheduledFutureJob(String memberId, ScheduledFuture<?> job) {
+ memberIdToScheduledTask.put(memberId, job);
+ }
+
+ public List<MemberContext> removeMemberContextsOfCluster(String clusterId) {
List<MemberContext> ctxts = clusterIdToMemberContext.remove(clusterId);
if(ctxts == null) {
- return;
+ return new ArrayList<MemberContext>();
}
for (MemberContext memberContext : ctxts) {
String memberId = memberContext.getMemberId();
memberIdToContext.remove(memberId);
+ stopTask(memberIdToScheduledTask.remove(memberId));
}
if(log.isDebugEnabled()) {
log.debug("Removed Member Context from the information model. "+ctxt);
}
+ return ctxts;
}
- public void removeMemberContext(String memberId, String clusterId) {
- memberIdToContext.remove(memberId);
+ public MemberContext removeMemberContext(String memberId, String clusterId) {
+ MemberContext returnedCtxt = memberIdToContext.remove(memberId);
List<MemberContext> ctxts = clusterIdToMemberContext.get(clusterId);
- if(ctxts == null) {
- return;
+
+ if (ctxts != null) {
+
+ List<MemberContext> newCtxts = new ArrayList<MemberContext>(ctxts);
+
+ for (Iterator<MemberContext> iterator = newCtxts.iterator(); iterator.hasNext();) {
+ MemberContext memberContext = (MemberContext) iterator.next();
+ if(memberId.equals(memberContext.getMemberId())) {
+ if(log.isDebugEnabled()) {
+
+ log.debug("MemberContext [id]: "+memberId+" removed from information model.");
+ }
+ iterator.remove();
+ }
+ }
+
+ clusterIdToMemberContext.put(clusterId, newCtxts);
}
- List<MemberContext> newCtxts = new ArrayList<MemberContext>(ctxts);
+ stopTask(memberIdToScheduledTask.remove(memberId));
- for (Iterator<MemberContext> iterator = newCtxts.iterator(); iterator.hasNext();) {
- MemberContext memberContext = (MemberContext) iterator.next();
- if(memberId.equals(memberContext.getMemberId())) {
- if(log.isDebugEnabled()) {
-
- log.debug("MemberContext [id]: "+memberId+" removed from information model.");
- }
- iterator.remove();
- }
- }
+ return returnedCtxt;
- clusterIdToMemberContext.put(clusterId, newCtxts);
+ }
+
+ private void stopTask(ScheduledFuture<?> task) {
+ if (task != null) {
+
+ task.cancel(true);
+ }
}
public MemberContext getMemberContextOfMemberId(String memberId) {
@@ -408,5 +433,13 @@ public class FasterLookUpDataHolder implements Serializable{
Map<String, KubernetesClusterContext> kubClusterIdToKubClusterContext) {
this.kubClusterIdToKubClusterContext = kubClusterIdToKubClusterContext;
}
+
+ public Map<String, ScheduledFuture<?>> getMemberIdToScheduledTask() {
+ return memberIdToScheduledTask;
+ }
+
+ public void setMemberIdToScheduledTask(Map<String, ScheduledFuture<?>> memberIdToScheduledTask) {
+ this.memberIdToScheduledTask = memberIdToScheduledTask;
+ }
}
\ No newline at end of file
[18/50] [abbrv] git commit: reading hostname from container for
memberId
Posted by ni...@apache.org.
reading hostname from container for memberId
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0e605f54
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0e605f54
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0e605f54
Branch: refs/heads/master
Commit: 0e605f5485706fa6d3d84d97ea8b138a5e11295b
Parents: d285423
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 17:11:53 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../autoscaler/KubernetesClusterContext.java | 18 +++-----
.../KubernetesServiceClusterMonitor.java | 48 ++++----------------
.../autoscaler/rule/RuleTasksDelegator.java | 29 +++++++++++-
.../config/CartridgeAgentConfiguration.java | 24 ++++++++--
4 files changed, 62 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/0e605f54/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
index 99ae4bc..b75c0cc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
@@ -30,8 +30,6 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
-import org.apache.stratos.autoscaler.exception.TerminationException;
import org.apache.stratos.autoscaler.policy.model.LoadAverage;
import org.apache.stratos.autoscaler.policy.model.MemoryConsumption;
import org.apache.stratos.autoscaler.policy.model.RequestsInFlight;
@@ -320,19 +318,13 @@ public class KubernetesClusterContext implements Serializable {
long pendingTime = System.currentTimeMillis()
- pendingMember.getInitTime();
if (pendingTime >= expiryTime) {
-
- // terminate all containers of this cluster
- try {
- CloudControllerClient.getInstance().terminateAllContainers(clusterId);
- iterator.remove();
- } catch (TerminationException e) {
- log.error(e.getMessage(), e);
- }
-
+ iterator.remove();
+ log.info("Pending state of member: " + pendingMember.getMemberId() +
+ " is expired. " + "Adding as an obsoleted member.");
+ ctxt.addObsoleteMember(pendingMember);
}
}
}
-
try {
// TODO find a constant
Thread.sleep(15000);
@@ -367,6 +359,8 @@ public class KubernetesClusterContext implements Serializable {
long obsoleteTime = System.currentTimeMillis() - obsoleteMember.getInitTime();
if (obsoleteTime >= obsoltedMemberExpiryTime) {
iterator.remove();
+ log.info("Obsolete state of member: " + obsoleteMember.getMemberId() +
+ " is expired. " + "Removing from obsolete member list");
}
}
try {
http://git-wip-us.apache.org/repos/asf/stratos/blob/0e605f54/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index d0d7668..068f21e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -18,8 +18,6 @@
*/
package org.apache.stratos.autoscaler.monitor;
-import java.util.Properties;
-
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,10 +30,7 @@ import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.messaging.domain.topology.Cluster;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.Service;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
/*
* It is monitoring a kubernetes service cluster periodically.
@@ -45,8 +40,6 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
private static final Log log = LogFactory.getLog(KubernetesServiceClusterMonitor.class);
private String lbReferenceType;
- private int numberOfReplicasInServiceCluster = 0;
- int retryInterval = 60000;
public KubernetesServiceClusterMonitor(KubernetesClusterContext kubernetesClusterCtxt,
String serviceClusterID, String serviceId,
@@ -83,33 +76,14 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
@Override
protected void monitor() {
- int minReplicas;
- try {
- TopologyManager.acquireReadLock();
- Service service = TopologyManager.getTopology().getService(getServiceId());
- Cluster cluster = service.getCluster(getClusterId());
- Properties props = cluster.getProperties();
- minReplicas = Integer.parseInt(props.getProperty(StratosConstants.KUBERNETES_MIN_REPLICAS));
- } finally {
- TopologyManager.releaseReadLock();
- }
-
String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID();
int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size();
int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size();
- int nonTerminatedMembers = activeMembers + pendingMembers;
+ int nonTerminatedMembers = getKubernetesClusterCtxt().getNonTerminatedMemberCount();
log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers
+ " Pending Members: "+pendingMembers);
-
- if (nonTerminatedMembers > 0 && nonTerminatedMembers < minReplicas) {
- // update
- int requiredReplicas = minReplicas - nonTerminatedMembers;
- log.info("Required replicas : "+requiredReplicas);
-
- } else if (nonTerminatedMembers >= minReplicas) {
- // TODO autoscale
- log.info("Current member count : "+nonTerminatedMembers);
- } else {
+
+ if (nonTerminatedMembers == 0) {
try {
CloudControllerClient ccClient = CloudControllerClient.getInstance();
MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId,
@@ -132,24 +106,20 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
} catch (SpawningException spawningException) {
if (log.isDebugEnabled()) {
String message = "Cannot create containers, will retry in "
- + (retryInterval / 1000) + "s";
+ + (getMonitorIntervalMilliseconds() / 1000) + "s";
log.debug(message, spawningException);
}
} catch (Exception exception) {
if (log.isDebugEnabled()) {
String message = "Error while creating containers, will retry in "
- + (retryInterval / 1000) + "s";
+ + (getMonitorIntervalMilliseconds() / 1000) + "s";
log.debug(message, exception);
}
}
- try {
- Thread.sleep(retryInterval);
- } catch (InterruptedException ignored) {
- }
- }
-
- minCheck();
- scaleCheck();
+ } else {
+ minCheck();
+ scaleCheck();
+ }
}
private void scaleCheck() {
http://git-wip-us.apache.org/repos/asf/stratos/blob/0e605f54/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 246dcc2..b062913 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -24,6 +24,7 @@ package org.apache.stratos.autoscaler.rule;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.Constants;
+import org.apache.stratos.autoscaler.KubernetesClusterContext;
import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
import org.apache.stratos.autoscaler.PartitionContext;
import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm;
@@ -198,12 +199,38 @@ public class RuleTasksDelegator {
log.error("Cannot terminate instance", e);
}
}
+
+ public void delegateCreateContainers(KubernetesClusterContext kubernetesClusterContext) {
+ try {
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+ String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
+ String clusterId = kubernetesClusterContext.getClusterId();
+ MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId, clusterId);
+ for (MemberContext memberContext : memberContexts) {
+
+ if (null != memberContext) {
+ kubernetesClusterContext.addPendingMember(memberContext);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format(
+ "Pending member added, [member] %s [kub cluster] %s",
+ memberContext.getMemberId(), kubernetesClusterId));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add to pending members");
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("Cannot create containers ", e);
+ }
+ }
public void delegateExpandCluster(String clusterId, int replicas) {
try {
CloudControllerClient.getInstance().updateKubernetesController(clusterId, replicas);
} catch (Throwable e) {
- log.error("Cannot update kubernetes controller", e);
+ log.error("Cannot update kubernetes controller ", e);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/0e605f54/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
index 970ba1a..febbcd3 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
@@ -28,6 +28,8 @@ import org.apache.stratos.cartridge.agent.util.CartridgeAgentConstants;
import org.apache.stratos.cartridge.agent.util.CartridgeAgentUtils;
import java.io.File;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.*;
/**
@@ -81,7 +83,7 @@ public class CartridgeAgentConfiguration {
clusterId = readParameterValue(CartridgeAgentConstants.CLUSTER_ID);
networkPartitionId = readParameterValue(CartridgeAgentConstants.NETWORK_PARTITION_ID);
partitionId = readParameterValue(CartridgeAgentConstants.PARTITION_ID);
- memberId = readOrGenerateMemberIdValue(CartridgeAgentConstants.MEMBER_ID,clusterId);
+ memberId = readMemberIdValue(CartridgeAgentConstants.MEMBER_ID);
cartridgeKey = readParameterValue(CartridgeAgentConstants.CARTRIDGE_KEY);
appPath = readParameterValue(CartridgeAgentConstants.APP_PATH);
repoUrl = readParameterValue(CartridgeAgentConstants.REPO_URL);
@@ -144,15 +146,27 @@ public class CartridgeAgentConfiguration {
return kubernetesClusterIdValue;
}
- private String readOrGenerateMemberIdValue(String memberId, String clusterId) {
+ private String readMemberIdValue(String memberId) {
String memberIdValue = null;
if (parameters.containsKey(memberId) && parameters.get(memberId) != null) {
memberIdValue = parameters.get(memberId);
} else if (System.getProperty(memberId) != null) {
memberIdValue = System.getProperty(memberId);
- } else {
- memberIdValue = clusterId + UUID.randomUUID().toString();
- log.debug(" MemberId generated as ["+memberIdValue+"] ");
+ } else {
+ String hostname = "unknown";
+ try {
+ log.info("Reading hostname from container");
+ InetAddress addr;
+ addr = InetAddress.getLocalHost();
+ hostname = addr.getHostName();
+ } catch (UnknownHostException e) {
+ String msg = "Hostname can not be resolved";
+ log.error(msg, e);
+ }
+ memberIdValue = hostname;
+ if (log.isDebugEnabled()) {
+ log.debug("MemberId is taking the value of hostname : [" + memberIdValue + "] ");
+ }
}
return memberIdValue;
}
[38/50] [abbrv] git commit: Return terminated members when scaling
down and also send member terminated event.
Posted by ni...@apache.org.
Return terminated members when scaling down and also send member terminated event.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/b0fd7b61
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/b0fd7b61
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/b0fd7b61
Branch: refs/heads/master
Commit: b0fd7b61e518aadfdfb8548ebca1527920104fe6
Parents: 6cc484f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 07:50:29 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 27 +++++++++++++++++---
.../runtime/FasterLookUpDataHolder.java | 1 +
2 files changed, 25 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/b0fd7b61/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index a9a72cb..6717f74 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -21,7 +21,9 @@ package org.apache.stratos.cloud.controller.impl;
import com.google.common.collect.ImmutableSet;
import com.google.common.net.InetAddresses;
+import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable;
@@ -1674,6 +1676,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
KubernetesApiClient kubApi = kubClusterContext.getKubApi();
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+
+ // get the current pods - useful when scale down
+ Pod[] previousStatePods = kubApi.getSelectedPods(new Label[]{l});
// update the replication controller - cluster id = replication controller id
if (LOG.isDebugEnabled()) {
@@ -1688,9 +1696,6 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ clusterId + " via Kubernetes layer.");
}
- // create a label query
- Label l = new Label();
- l.setName(clusterId);
// execute the label query
Pod[] allPods = new Pod[0];
@@ -1719,6 +1724,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// generate Member Contexts
for (Pod pod : allPods) {
MemberContext context;
+ // if member context does not exist -> a new member (scale up)
if ((context = dataHolder.getMemberContextOfMemberId(pod.getId())) == null) {
context = podToMemberContextFunc.apply(pod);
@@ -1737,6 +1743,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
dataHolder.addScheduledFutureJob(context.getMemberId(), exec.schedule(new PodActivationWatcher(pod.getId(), context, kubApi), 5000));
memberContexts.add(context);
+
}
// publish data
// TODO
@@ -1744,6 +1751,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
+ if (memberContexts.isEmpty()) {
+ // terminated members
+ @SuppressWarnings("unchecked")
+ List<Pod> difference = ListUtils.subtract(Arrays.asList(previousStatePods), Arrays.asList(allPods));
+ for (Pod pod : difference) {
+ if (pod != null) {
+ MemberContext context = dataHolder.getMemberContextOfMemberId(pod.getId());
+ logTermination(context);
+ memberContexts.add(context);
+ }
+ }
+ }
+
+
// persist in registry
persist();
http://git-wip-us.apache.org/repos/asf/stratos/blob/b0fd7b61/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
index 2a83908..199f9c8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
@@ -338,6 +338,7 @@ public class FasterLookUpDataHolder implements Serializable{
if (task != null) {
task.cancel(true);
+ log.info("Scheduled Pod Activation Watcher task canceled.");
}
}
[07/50] [abbrv] git commit: Adding Kubernetes response handler and a
kubernetes response class to handle http responses.
Posted by ni...@apache.org.
Adding Kubernetes response handler and a kubernetes response class to handle http responses.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8635c6f2
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8635c6f2
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8635c6f2
Branch: refs/heads/master
Commit: 8635c6f261803268ab99b64c3fa274b9f95f59cf
Parents: 7d89126
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:51:38 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../client/rest/KubernetesResponse.java | 56 +++++++++++++++
.../client/rest/KubernetesResponseHandler.java | 71 ++++++++++++++++++++
2 files changed, 127 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/8635c6f2/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
new file mode 100644
index 0000000..e8f17c3
--- /dev/null
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
@@ -0,0 +1,56 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.stratos.kubernetes.client.rest;
+
+/**
+ * Holds the data extracted from a HttpResponse.
+ */
+public class KubernetesResponse {
+
+ private int statusCode;
+ private String content;
+ private String reason;
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+ public String getContent() {
+ return content;
+ }
+ public void setContent(String content) {
+ this.content = content;
+ }
+ public String getReason() {
+ return reason;
+ }
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+ @Override
+ public String toString() {
+ return "KubernetesResponse [statusCode=" + statusCode + ", content=" + content
+ + ", reason=" + reason + "]";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/8635c6f2/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
new file mode 100644
index 0000000..da6aa90
--- /dev/null
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.stratos.kubernetes.client.rest;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpResponseException;
+import org.apache.http.client.ResponseHandler;
+
+/**
+ * Handles a HttpResponse and returns a {@link KubernetesResponse}
+ */
+public class KubernetesResponseHandler implements ResponseHandler<KubernetesResponse>{
+
+ @Override
+ public KubernetesResponse handleResponse(HttpResponse response) throws ClientProtocolException,
+ IOException {
+ StatusLine statusLine = response.getStatusLine();
+ HttpEntity entity = response.getEntity();
+ if (statusLine.getStatusCode() >= 300) {
+ throw new HttpResponseException(
+ statusLine.getStatusCode(),
+ statusLine.getReasonPhrase());
+ }
+ if (entity == null) {
+ throw new ClientProtocolException("Response contains no content");
+ }
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ (response.getEntity().getContent())));
+
+ String output;
+ String result = "";
+
+ while ((output = reader.readLine()) != null) {
+ result += output;
+ }
+
+ KubernetesResponse kubResponse = new KubernetesResponse();
+ kubResponse.setStatusCode(statusLine.getStatusCode());
+ kubResponse.setContent(result);
+ kubResponse.setReason(statusLine.getReasonPhrase());
+
+ return kubResponse;
+ }
+
+
+}
[17/50] [abbrv] git commit: calling createContainers() from drool
Posted by ni...@apache.org.
calling createContainers() from drool
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a7c01349
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a7c01349
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a7c01349
Branch: refs/heads/master
Commit: a7c013495692b0450a6509256af2f84919144840
Parents: 0e605f5
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 18:57:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../KubernetesServiceClusterMonitor.java | 50 +-------------------
.../autoscaler/rule/RuleTasksDelegator.java | 10 ++--
.../src/main/conf/container-mincheck.drl | 14 ++++--
.../src/main/conf/container-scaling.drl | 4 +-
4 files changed, 19 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/a7c01349/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index 068f21e..fdff259 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -22,13 +22,10 @@ import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.KubernetesClusterContext;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
-import org.apache.stratos.autoscaler.exception.SpawningException;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.autoscaler.util.ConfUtil;
-import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
@@ -75,51 +72,8 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
@Override
protected void monitor() {
-
- String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID();
- int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size();
- int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size();
- int nonTerminatedMembers = getKubernetesClusterCtxt().getNonTerminatedMemberCount();
- log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers
- + " Pending Members: "+pendingMembers);
-
- if (nonTerminatedMembers == 0) {
- try {
- CloudControllerClient ccClient = CloudControllerClient.getInstance();
- MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId,
- getClusterId());
- for (MemberContext memberContext : memberContexts) {
-
- if (null != memberContext) {
- getKubernetesClusterCtxt().addPendingMember(memberContext);
- if (log.isDebugEnabled()) {
- log.debug(String.format(
- "Pending member added, [member] %s [kub cluster] %s",
- memberContext.getMemberId(), kubernetesClusterId));
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Returned member context is null, did not add to pending members");
- }
- }
- }
- } catch (SpawningException spawningException) {
- if (log.isDebugEnabled()) {
- String message = "Cannot create containers, will retry in "
- + (getMonitorIntervalMilliseconds() / 1000) + "s";
- log.debug(message, spawningException);
- }
- } catch (Exception exception) {
- if (log.isDebugEnabled()) {
- String message = "Error while creating containers, will retry in "
- + (getMonitorIntervalMilliseconds() / 1000) + "s";
- log.debug(message, exception);
- }
- }
- } else {
- minCheck();
- scaleCheck();
- }
+ minCheck();
+ scaleCheck();
}
private void scaleCheck() {
http://git-wip-us.apache.org/repos/asf/stratos/blob/a7c01349/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index b062913..416aa31 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -202,12 +202,11 @@ public class RuleTasksDelegator {
public void delegateCreateContainers(KubernetesClusterContext kubernetesClusterContext) {
try {
+ String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
+ String clusterId = kubernetesClusterContext.getClusterId();
CloudControllerClient ccClient = CloudControllerClient.getInstance();
- String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
- String clusterId = kubernetesClusterContext.getClusterId();
MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId, clusterId);
for (MemberContext memberContext : memberContexts) {
-
if (null != memberContext) {
kubernetesClusterContext.addPendingMember(memberContext);
if (log.isDebugEnabled()) {
@@ -221,12 +220,13 @@ public class RuleTasksDelegator {
}
}
}
- } catch (Exception e) {
+ } catch (Throwable e) {
log.error("Cannot create containers ", e);
}
}
- public void delegateExpandCluster(String clusterId, int replicas) {
+ public void delegateExpandCluster(KubernetesClusterContext kubernetesClusterContext, int replicas) {
+ String clusterId = kubernetesClusterContext.getClusterId();
try {
CloudControllerClient.getInstance().updateKubernetesController(clusterId, replicas);
} catch (Throwable e) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/a7c01349/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
index edea3cf..9c3cf0f 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
@@ -39,10 +39,16 @@ dialect "mvel"
+ " [cluster] " + clusterId + " Non terminated member count: " + nonTerminatedReplicas))
eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId
+ " [cluster] " + clusterId + " Minimum member count: " + minReplicas))
- eval (nonTerminatedReplicas < minReplicas)
+ eval(nonTerminatedReplicas < minReplicas)
then
- log.info("[min-check] [kub-cluster] " + kubernetesClusterId
- + " [cluster] " + clusterId + " : min-rule not satisfied, creating more containers")
- $delegator.delegateExpandCluster($kubernetesClusterContext.getClusterId(), minReplicas);
+ if (nonTerminatedReplicas == 0) {
+ log.info("[min-check] [kub-cluster] " + kubernetesClusterId
+ + " [cluster] " + clusterId + " : min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas);
+ $delegator.delegateCreateContainers($kubernetesClusterContext);
+ } else {
+ log.info("[min-check] [kub-cluster] " + kubernetesClusterId
+ + " [cluster] " + clusterId + " : min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas);
+ $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas);
+ }
end
http://git-wip-us.apache.org/repos/asf/stratos/blob/a7c01349/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
index c773264..6f20274 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
@@ -136,11 +136,11 @@ dialect "mvel"
}
//expand the cluster
log.info("[scaling] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
- $delegator.delegateExpandCluster(clusterId, requiredReplicas);
+ $delegator.delegateExpandCluster($kubernetesClusterContext, requiredReplicas);
} else if (scaleDown) {
log.debug("[scale-down] Decided to scale down : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId);
//shrink the cluster to minReplicas
- $delegator.delegateExpandCluster(clusterId, minReplicas);
+ $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas);
} else {
log.debug("[scaling] No decision made to either scale up or down ... ");
}
[48/50] [abbrv] git commit: Make pod activation error log to just
print error message as it clutters the log due to the frequency,
and print the full log on debug.
Posted by ni...@apache.org.
Make pod activation error log to just print error message as it clutters the log due to the frequency, and print the full log on debug.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/edc243e9
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/edc243e9
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/edc243e9
Branch: refs/heads/master
Commit: edc243e9d1fc1a821c1887ee0e6e8432abc1a425
Parents: 06b1675
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 09:10:38 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/util/PodActivationWatcher.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/edc243e9/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
index 672cfeb..23924b4 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
@@ -67,7 +67,12 @@ public class PodActivationWatcher implements Runnable {
}
} catch (Exception e) {
- LOG.error("Container Activation Watcher Failed.. ", e);
+ // not logging exception intentionally
+ LOG.error("Container Activation Watcher Failed.. Cause: "+e.getMessage());
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(e);
+ }
}
}
[32/50] [abbrv] git commit: Updating CC wsdl based on the latest API
changes.
Posted by ni...@apache.org.
Updating CC wsdl based on the latest API changes.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/192228ed
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/192228ed
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/192228ed
Branch: refs/heads/master
Commit: 192228ede698a33626384463dd00b89ca2d5aa98
Parents: 63d5cec
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Thu Oct 9 19:05:48 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../main/resources/CloudControllerService.wsdl | 890 ++++++++++---------
1 file changed, 455 insertions(+), 435 deletions(-)
----------------------------------------------------------------------
[50/50] [abbrv] git commit: Fixing a build failure.
Posted by ni...@apache.org.
Fixing a build failure.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/aa06b1a9
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/aa06b1a9
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/aa06b1a9
Branch: refs/heads/master
Commit: aa06b1a95e5d430ac3b7364d9359d58c188d3dfe
Parents: 530a166
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 09:42:06 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:42:06 2014 +0530
----------------------------------------------------------------------
.../main/java/org/apache/stratos/cli/StratosApplication.java | 2 +-
.../stratos/cli/commands/UnDeployKubernetesGroupCommand.java | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa06b1a9/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
index b76edcb..349b334 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
@@ -195,7 +195,7 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon
command = new DeployKubernetesHostCommand();
commands.put(command.getName(), command);
- command = new UndeployKubernetesGroupCommand();
+ command = new UnDeployKubernetesGroupCommand();
commands.put(command.getName(), command);
command = new UndeployKubernetesHostCommand();
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa06b1a9/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/UnDeployKubernetesGroupCommand.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/UnDeployKubernetesGroupCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/UnDeployKubernetesGroupCommand.java
index ffa8be2..96b81e8 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/UnDeployKubernetesGroupCommand.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/UnDeployKubernetesGroupCommand.java
@@ -33,11 +33,11 @@ import java.io.IOException;
/**
* Un-deploy kubernetes group command.
*/
-public class UndeployKubernetesGroupCommand implements Command<StratosCommandContext> {
+public class UnDeployKubernetesGroupCommand implements Command<StratosCommandContext> {
- private static final Logger logger = LoggerFactory.getLogger(UndeployKubernetesGroupCommand.class);
+ private static final Logger logger = LoggerFactory.getLogger(UnDeployKubernetesGroupCommand.class);
- public UndeployKubernetesGroupCommand() {
+ public UnDeployKubernetesGroupCommand() {
}
@Override
[12/50] [abbrv] git commit: Excluding incorrect http client versions
from stratos product and removing unused jars.
Posted by ni...@apache.org.
Excluding incorrect http client versions from stratos product and removing unused jars.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/faf532ce
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/faf532ce
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/faf532ce
Branch: refs/heads/master
Commit: faf532ce4ee61fc7e1669860088a74ceb0d81c47
Parents: 6780187
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:09:13 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
products/stratos/modules/distribution/src/assembly/bin.xml | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/faf532ce/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml b/products/stratos/modules/distribution/src/assembly/bin.xml
index e244ea4..a318f5c 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -72,6 +72,8 @@
<exclude>**/marshalling_1.3.6.wso2v1.jar</exclude>
<exclude>**/jboss-transaction-api_1.1_spec-1.0.0.Final.jar</exclude>
<exclude>**/org.wso2.carbon.ui_4.2.0.jar</exclude>
+ <exclude>**/httpclient_4.1.1.wso2v1.jar</exclude>
+ <exclude>**/httpcore_4.1.0.wso2v1.jar</exclude>
</excludes>
</fileSet>
@@ -605,10 +607,6 @@
<include>org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar</include>
<include>org.fusesource.hawtbuf:hawtbuf:jar</include>
<include>org.eclipse.paho:mqtt-client:jar</include>
- <include>org.apache.stratos:org.apache.stratos.kubernetes.client:jar</include>
- <include>org.jboss.resteasy:resteasy-jaxrs:jar</include>
- <include>org.jboss.resteasy:resteasy-jaxb-provider:jar</include>
- <include>org.jboss.resteasy:resteasy-jackson-provider:jar</include>
</includes>
</dependencySet>
<dependencySet>
[03/50] [abbrv] git commit: Temporarily fixing Kubernetes cluster
monitor to work with new CC APIs.
Posted by ni...@apache.org.
Temporarily fixing Kubernetes cluster monitor to work with new CC APIs.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c02907b7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c02907b7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c02907b7
Branch: refs/heads/master
Commit: c02907b7b172611d42dafaa2a149d7f0e7994b1a
Parents: faf532c
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:11:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/CloudControllerClient.java | 2 +-
.../KubernetesServiceClusterMonitor.java | 61 +++++++++++---------
2 files changed, 36 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c02907b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index 296182f..eaa80c4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -238,7 +238,7 @@ public class CloudControllerClient {
* @return
* @throws SpawningException
*/
- public synchronized MemberContext[] createContainer(String kubernetesClusterId, String clusterId) throws SpawningException {
+ public synchronized MemberContext[] createContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
try {
KubernetesManager kubernetesManager = KubernetesManager.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/c02907b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index 6e14ce0..6362fc4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -91,49 +91,58 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
TopologyManager.releaseReadLock();
}
- // is container created successfully?
- boolean success = false;
String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID();
int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size();
int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size();
int nonTerminatedMembers = activeMembers + pendingMembers;
+ log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers
+ + " Pending Members: "+pendingMembers);
+
+ if (nonTerminatedMembers > 0 && nonTerminatedMembers < minReplicas) {
+ // update
+ int requiredReplicas = minReplicas - nonTerminatedMembers;
+ log.info("Required replicas : "+requiredReplicas);
+
+ } else if (nonTerminatedMembers >= minReplicas) {
+ // TODO autoscale
+ log.info("Current member count : "+nonTerminatedMembers);
+ } else {
+ try {
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+ MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId,
+ getClusterId());
+ for (MemberContext memberContext : memberContexts) {
- if (nonTerminatedMembers == 0) {
- while (!success) {
- try {
- CloudControllerClient ccClient = CloudControllerClient.getInstance();
- MemberContext memberContext = ccClient.createContainer(kubernetesClusterId, getClusterId());
if (null != memberContext) {
getKubernetesClusterCtxt().addPendingMember(memberContext);
- success = true;
- numberOfReplicasInServiceCluster = minReplicas;
if (log.isDebugEnabled()) {
- log.debug(String.format("Pending member added, [member] %s [kub cluster] %s",
- memberContext.getMemberId(), kubernetesClusterId));
+ log.debug(String.format(
+ "Pending member added, [member] %s [kub cluster] %s",
+ memberContext.getMemberId(), kubernetesClusterId));
}
} else {
if (log.isDebugEnabled()) {
log.debug("Returned member context is null, did not add to pending members");
}
}
- } catch (SpawningException spawningException) {
- if (log.isDebugEnabled()) {
- String message = "Cannot create containers, will retry in "
- + (retryInterval / 1000) + "s";
- log.debug(message, spawningException);
- }
- } catch (Exception exception) {
- if (log.isDebugEnabled()) {
- String message = "Error while creating containers, will retry in "
- + (retryInterval / 1000) + "s";
- log.debug(message, exception);
- }
}
- try {
- Thread.sleep(retryInterval);
- } catch (InterruptedException ignored) {
+ } catch (SpawningException spawningException) {
+ if (log.isDebugEnabled()) {
+ String message = "Cannot create containers, will retry in "
+ + (retryInterval / 1000) + "s";
+ log.debug(message, spawningException);
+ }
+ } catch (Exception exception) {
+ if (log.isDebugEnabled()) {
+ String message = "Error while creating containers, will retry in "
+ + (retryInterval / 1000) + "s";
+ log.debug(message, exception);
}
}
+ try {
+ Thread.sleep(retryInterval);
+ } catch (InterruptedException ignored) {
+ }
}
}
[23/50] [abbrv] git commit: Few improvements;
checking Pod creation & wait till pods getting created, terminate
Pods forcefully to make sure Pods are not running.
Posted by ni...@apache.org.
Few improvements; checking Pod creation & wait till pods getting created, terminate Pods forcefully to make sure Pods are not running.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/742a08d7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/742a08d7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/742a08d7
Branch: refs/heads/master
Commit: 742a08d787557982bac929e64e7ca27a346c5ca4
Parents: 78497e8
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:21:05 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 50 ++++++++++++++++----
1 file changed, 42 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/742a08d7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 4042140..da96ab0 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1372,7 +1372,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
try {
- validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
+ String minReplicas = validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
String kubernetesMasterIp = validateProperty(StratosConstants.KUBERNETES_MASTER_IP, containerClusterContext);
String kubernetesPortRange = validateProperty(StratosConstants.KUBERNETES_PORT_RANGE, containerClusterContext);
@@ -1408,19 +1408,30 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.createService(service);
+ // set host port
+ ctxt.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, service.getPort());
+
if (log.isDebugEnabled()) {
log.debug("Cloud Controller successfully started the service "
+ controller + " via Kubernetes layer.");
}
- // needs to wait few seconds before running label queries
- Thread.sleep(3000);
-
// create a label query
Label l = new Label();
l.setName(clusterId);
// execute the label query
- Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+ Pod[] newlyCreatedPods = new Pod[0];
+ int expectedCount = Integer.parseInt(minReplicas);
+
+ for (int i = 0; i < expectedCount ; i++) {
+ newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+
+ log.info("Pods "+newlyCreatedPods.length);
+ if(newlyCreatedPods.length == expectedCount) {
+ break;
+ }
+ Thread.sleep(5000);
+ }
if (log.isDebugEnabled()) {
@@ -1436,10 +1447,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
context.setCartridgeType(cartridgeType);
context.setClusterId(clusterId);
- context.setProperties(CloudControllerUtil.addProperty(containerClusterContext
+ context.setProperties(CloudControllerUtil.addProperty(context
.getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
- CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
+ String.valueOf(service.getPort())));
+
dataHolder.addMemberContext(context);
// trigger topology
@@ -1565,6 +1576,29 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// we're not going to throw this error, but proceed with other deletions
log.error("Failed to update Kubernetes Controller with id: "+clusterId, e);
}
+
+ // delete pods forcefully
+ try {
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+ // execute the label query
+ Pod[] pods = kubApi.getSelectedPods(new Label[]{l});
+
+ for (Pod pod : pods) {
+ try {
+ // delete pods forcefully
+ kubApi.deletePod(pod.getId());
+ } catch (KubernetesClientException ignore) {
+ // we can't do nothing here
+ log.warn(String.format("Failed to delete Pod [%s] forcefully!", pod.getId()));
+ }
+ }
+ } catch (KubernetesClientException e) {
+ // we're not going to throw this error, but proceed with other deletions
+ log.error("Failed to delete pods forcefully for cluster: "+clusterId, e);
+ }
+
// delete the replication controller.
try {
kubApi.deleteReplicationController(clusterId);
[29/50] [abbrv] git commit: Fixing a minor sonar issue - using
all-caps for static final variables.
Posted by ni...@apache.org.
Fixing a minor sonar issue - using all-caps for static final variables.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/afb9daa4
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/afb9daa4
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/afb9daa4
Branch: refs/heads/master
Commit: afb9daa44a2e29defdabbe1604dac39e925150df
Parents: f5c34c0
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Thu Oct 9 18:57:35 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../internal/CloudControllerDSComponent.java | 30 +++++++++-----------
1 file changed, 13 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/afb9daa4/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerDSComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerDSComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerDSComponent.java
index 24ca75c..934788f 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerDSComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerDSComponent.java
@@ -59,7 +59,7 @@ import org.wso2.carbon.utils.ConfigurationContextService;
*/
public class CloudControllerDSComponent {
- private static final Log log = LogFactory
+ private static final Log LOG = LogFactory
.getLog(CloudControllerDSComponent.class);
protected void activate(ComponentContext context) {
@@ -84,37 +84,35 @@ public class CloudControllerDSComponent {
bundleContext.registerService(CloudControllerService.class.getName(),
new CloudControllerServiceImpl(), null);
- if (log.isInfoEnabled()) {
- log.info("Scheduling tasks");
+ if (LOG.isInfoEnabled()) {
+ LOG.info("Scheduling tasks");
}
TopologySynchronizerTaskScheduler.schedule(ServiceReferenceHolder
.getInstance().getTaskService());
} catch (Throwable e) {
- log.error(
- "******* Cloud Controller Service bundle is failed to activate ****",
- e);
+ LOG.error("Cloud Controller Service bundle is failed to activate.", e);
}
}
protected void setTaskService(TaskService taskService) {
- if (log.isDebugEnabled()) {
- log.debug("Setting the Task Service");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Setting the Task Service");
}
ServiceReferenceHolder.getInstance().setTaskService(taskService);
}
protected void unsetTaskService(TaskService taskService) {
- if (log.isDebugEnabled()) {
- log.debug("Unsetting the Task Service");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Unsetting the Task Service");
}
ServiceReferenceHolder.getInstance().setTaskService(null);
}
protected void setRegistryService(RegistryService registryService) {
- if (log.isDebugEnabled()) {
- log.debug("Setting the Registry Service");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Setting the Registry Service");
}
try {
@@ -123,14 +121,14 @@ public class CloudControllerDSComponent {
ServiceReferenceHolder.getInstance().setRegistry(registry);
} catch (RegistryException e) {
String msg = "Failed when retrieving Governance System Registry.";
- log.error(msg, e);
+ LOG.error(msg, e);
throw new CloudControllerException(msg, e);
}
}
protected void unsetRegistryService(RegistryService registryService) {
- if (log.isDebugEnabled()) {
- log.debug("Unsetting the Registry Service");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Unsetting the Registry Service");
}
ServiceReferenceHolder.getInstance().setRegistry(null);
}
@@ -147,8 +145,6 @@ public class CloudControllerDSComponent {
}
protected void deactivate(ComponentContext ctx) {
- // Close event publisher connections to message broker
- // EventPublisherPool.close(Constants.TOPOLOGY_TOPIC);
}
}
[45/50] [abbrv] git commit: deleting the service if the pods are not
created within a period
Posted by ni...@apache.org.
deleting the service if the pods are not created within a period
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6cc484f4
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6cc484f4
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6cc484f4
Branch: refs/heads/master
Commit: 6cc484f40e4334859dc71cf1618d331049157d1a
Parents: f8353a6
Author: R-Rajkumar <rr...@gmail.com>
Authored: Fri Oct 10 22:52:10 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/impl/CloudControllerServiceImpl.java | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6cc484f4/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 5194a76..a9a72cb 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1426,8 +1426,16 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if(newlyCreatedPods.length == expectedCount) {
break;
}
- Thread.sleep(5000);
+ Thread.sleep(10000);
}
+
+ if (newlyCreatedPods.length == 0) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(String.format("Pods are not created for cluster : %s, hence deleting the service", clusterId));
+ }
+ terminateAllContainers(clusterId);
+ return new MemberContext[0];
+ }
if (LOG.isDebugEnabled()) {
[02/50] [abbrv] git commit: Removing unused imports
Posted by ni...@apache.org.
Removing unused imports
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fb53d223
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fb53d223
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fb53d223
Branch: refs/heads/master
Commit: fb53d22370729969560f9c4f2d0a1132f5b83e97
Parents: c02907b
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:18:29 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../functions/ContainerClusterContextToKubernetesContainer.java | 1 -
.../functions/ContainerClusterContextToKubernetesService.java | 2 --
.../functions/ContainerClusterContextToReplicationController.java | 1 -
3 files changed, 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fb53d223/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
index 7b940d9..8837406 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.pojo.Cartridge;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.pojo.PortMapping;
import org.apache.stratos.cloud.controller.pojo.Property;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
http://git-wip-us.apache.org/repos/asf/stratos/blob/fb53d223/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
index c515a3b..61fe0ee 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
@@ -21,7 +21,6 @@ package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.common.constants.StratosConstants;
@@ -54,7 +53,6 @@ public class ContainerClusterContextToKubernetesService implements Function<Cont
service.setId(CloudControllerUtil.getCompatibleId(clusterId));
service.setKind("Service");
int hostPort = kubClusterContext.getAnAvailableHostPort();
- clusterContext.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, hostPort);
service.setPort(hostPort);
Selector selector = new Selector();
selector.setName(clusterId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/fb53d223/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
index 08b7ab5..a60fd5c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
@@ -20,7 +20,6 @@ package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.common.constants.StratosConstants;
[25/50] [abbrv] git commit: fixing drools logic and adding comments
Posted by ni...@apache.org.
fixing drools logic and adding comments
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/67313a1e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/67313a1e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/67313a1e
Branch: refs/heads/master
Commit: 67313a1eca106fb310a2061b1e46f5fbb03e4c5f
Parents: 7c072a9
Author: R-Rajkumar <rr...@gmail.com>
Authored: Fri Oct 10 10:38:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../autoscaler/KubernetesClusterContext.java | 12 ++++
.../cloud/controller/CloudControllerClient.java | 22 +++---
.../KubernetesServiceClusterMonitor.java | 13 ++--
.../autoscaler/rule/RuleTasksDelegator.java | 71 ++++++++++++++------
.../src/main/conf/container-mincheck.drl | 23 ++++---
.../src/main/conf/container-scaling.drl | 27 ++++++--
6 files changed, 114 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
index b75c0cc..0dfea0c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
@@ -50,6 +50,10 @@ public class KubernetesClusterContext implements Serializable {
private int minReplicas;
private int maxReplicas = 10;
private int currentReplicas = 0;
+
+ // it will tell whether the startContainers() method succeed or not for the 1st time
+ // we should call startContainers() only once
+ private boolean isServiceClusterCreated = false;
// properties
private Properties properties;
@@ -647,4 +651,12 @@ public class KubernetesClusterContext implements Serializable {
public void setClusterId(String clusterId) {
this.clusterId = clusterId;
}
+
+ public boolean isServiceClusterCreated() {
+ return isServiceClusterCreated;
+ }
+
+ public void setServiceClusterCreated(boolean isServiceClusterCreated) {
+ this.isServiceClusterCreated = isServiceClusterCreated;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index b7a476a..ce69875 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -244,7 +244,7 @@ public class CloudControllerClient {
* @return
* @throws SpawningException
*/
- public synchronized MemberContext[] createContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
+ public synchronized MemberContext[] startContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
try {
KubernetesManager kubernetesManager = KubernetesManager.getInstance();
@@ -310,22 +310,22 @@ public class CloudControllerClient {
}
}
- public synchronized void updateKubernetesController(String clusterId, int replicas)
- throws SpawningException {
+ public synchronized MemberContext[] updateContainers(String clusterId, int replicas)
+ throws SpawningException {
try {
log.info(String.format("Updating kubernetes replication controller via cloud controller: " +
"[cluster] %s [replicas] %s", clusterId, replicas));
- stub.updateKubernetesController(clusterId, replicas);
+ MemberContext[] memberContexts = stub.updateContainers(clusterId, replicas);
+ return memberContexts;
+ } catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
+ String msg = "Error while updating kubernetes controller, cartridge not found for [cluster] " + clusterId;
+ log.error(msg, e);
+ throw new SpawningException(msg, e);
} catch (RemoteException e) {
String msg = "Error while updating kubernetes controller, cannot communicate with " +
"cloud controller service";
log.error(msg, e);
- throw new SpawningException(e.getMessage(), e);
- } catch (CloudControllerServiceInvalidClusterExceptionException e) {
- String msg = "Error while updating kubernetes controller, invalid clusterId";
- log.error(msg, e);
- throw new SpawningException(e.getMessage(), e);
- }
+ throw new SpawningException(msg, e);
+ }
}
-
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index fdff259..8bfc1a8 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -96,7 +96,7 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
if (log.isDebugEnabled()) {
log.debug(String.format(
- "Running scale check for kub-cluster %s ", kubernetesClusterID));
+ "Running scale check for [kub-cluster] : %s [cluster] : %s ", kubernetesClusterID, getClusterId()));
}
scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(
getScaleCheckKnowledgeSession(), scaleCheckFactHandle, getKubernetesClusterCtxt());
@@ -105,16 +105,17 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
getKubernetesClusterCtxt().setLoadAverageReset(false);
} else if (log.isDebugEnabled()) {
log.debug(String.format("Scale check will not run since none of the statistics have not received yet for "
- + "[kub-cluster] %s [cluster] %s", kubernetesClusterID, clusterId));
+ + "[kub-cluster] : %s [cluster] : %s", kubernetesClusterID, clusterId));
}
}
private void minCheck() {
getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running minimum check for cluster %s ",
- getClusterId()));
- }
+ String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID();
+ if (log.isDebugEnabled()) {
+ log.debug(String.format(
+ "Running min check for [kub-cluster] : %s [cluster] : %s ", kubernetesClusterID, getClusterId()));
+ }
minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(
getMinCheckKnowledgeSession(), minCheckFactHandle,
getKubernetesClusterCtxt());
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 416aa31..9d3227a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -199,36 +199,67 @@ public class RuleTasksDelegator {
log.error("Cannot terminate instance", e);
}
}
-
- public void delegateCreateContainers(KubernetesClusterContext kubernetesClusterContext) {
+
+ public void delegateStartContainers(KubernetesClusterContext kubernetesClusterContext) {
try {
- String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
- String clusterId = kubernetesClusterContext.getClusterId();
+ String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
+ String clusterId = kubernetesClusterContext.getClusterId();
CloudControllerClient ccClient = CloudControllerClient.getInstance();
- MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId, clusterId);
- for (MemberContext memberContext : memberContexts) {
- if (null != memberContext) {
- kubernetesClusterContext.addPendingMember(memberContext);
- if (log.isDebugEnabled()) {
- log.debug(String.format(
- "Pending member added, [member] %s [kub cluster] %s",
- memberContext.getMemberId(), kubernetesClusterId));
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Returned member context is null, did not add to pending members");
+ MemberContext[] memberContexts = ccClient.startContainers(kubernetesClusterId, clusterId);
+ if (null != memberContexts) {
+ for (MemberContext memberContext : memberContexts) {
+ if (null != memberContext) {
+ kubernetesClusterContext.addPendingMember(memberContext);
+ kubernetesClusterContext.setServiceClusterCreated(true);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format(
+ "Pending member added, [member] %s [kub cluster] %s",
+ memberContext.getMemberId(), kubernetesClusterId));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add any pending members");
+ }
}
}
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add to pending members");
+ }
}
} catch (Throwable e) {
log.error("Cannot create containers ", e);
}
- }
+ }
- public void delegateExpandCluster(KubernetesClusterContext kubernetesClusterContext, int replicas) {
- String clusterId = kubernetesClusterContext.getClusterId();
+ public void delegateUpdateContainers(KubernetesClusterContext kubernetesClusterContext,
+ int replicas) {
+ String clusterId = kubernetesClusterContext.getClusterId();
try {
- CloudControllerClient.getInstance().updateKubernetesController(clusterId, replicas);
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+ // getting newly created pods' member contexts
+ MemberContext[] memberContexts = ccClient.updateContainers(clusterId, replicas);
+ if (null != memberContexts) {
+ for (MemberContext memberContext : memberContexts) {
+ if (null != memberContext) {
+ kubernetesClusterContext.addPendingMember(memberContext);
+ if (log.isDebugEnabled()) {
+ String kubernetesClusterID = kubernetesClusterContext.getKubernetesClusterID();
+ log.debug(String.format(
+ "Pending member added, [member] %s [kub cluster] %s",
+ memberContext.getMemberId(), kubernetesClusterID));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add any pending members");
+ }
+ }
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned array of member context is null, did not add to pending members");
+ }
+ }
} catch (Throwable e) {
log.error("Cannot update kubernetes controller ", e);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
index 9c3cf0f..605c553 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
@@ -33,22 +33,23 @@ dialect "mvel"
kubernetesClusterId : String() from $kubernetesClusterContext.getKubernetesClusterID()
minReplicas : Integer() from $kubernetesClusterContext.getMinReplicas()
nonTerminatedReplicas : Integer() from $kubernetesClusterContext.getNonTerminatedMemberCount()
+ isServiceClusterCreated : Boolean() from $kubernetesClusterContext.isServiceClusterCreated()
eval(log.debug("Running minimum rule: [kub-cluster] " +kubernetesClusterId + " [cluster] " + clusterId))
- eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId
- + " [cluster] " + clusterId + " Non terminated member count: " + nonTerminatedReplicas))
- eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId
- + " [cluster] " + clusterId + " Minimum member count: " + minReplicas))
+ eval(log.debug("[min-check] " + " [cluster] " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
+ eval(log.debug("[min-check] " + " [cluster] " + clusterId + " [Replicas] minReplicas : " + minReplicas))
eval(nonTerminatedReplicas < minReplicas)
then
- if (nonTerminatedReplicas == 0) {
- log.info("[min-check] [kub-cluster] " + kubernetesClusterId
- + " [cluster] " + clusterId + " : min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas);
- $delegator.delegateCreateContainers($kubernetesClusterContext);
+ if (isServiceClusterCreated) {
+ // we suceeded calling startContainer() once, can't call it again
+ log.info("[min-check] Decided to scale-up : [cluster] " + clusterId);
+ log.info("[min-check] " + " [cluster] " + clusterId + " min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas);
+ $delegator.delegateUpdateContainers($kubernetesClusterContext, minReplicas);
} else {
- log.info("[min-check] [kub-cluster] " + kubernetesClusterId
- + " [cluster] " + clusterId + " : min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas);
- $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas);
+ // we should call startContainer
+ log.info("[min-check] Decided to create the cluster : [cluster] " + clusterId);
+ log.info("[min-check] " + " [cluster] " + clusterId + " : min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas);
+ $delegator.delegateStartContainers($kubernetesClusterContext);
}
end
http://git-wip-us.apache.org/repos/asf/stratos/blob/67313a1e/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
index 6f20274..398049b 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
@@ -38,6 +38,7 @@ dialect "mvel"
kubernetesClusterId : String() from $kubernetesClusterContext.getKubernetesClusterID()
minReplicas : Integer() from $kubernetesClusterContext.getMinReplicas()
maxReplicas : Integer() from $kubernetesClusterContext.getMaxReplicas()
+ nonTerminatedReplicas : Integer() from $kubernetesClusterContext.getNonTerminatedMemberCount()
eval(log.debug("Running scaling rule : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId))
@@ -78,6 +79,7 @@ dialect "mvel"
scaleUp : Boolean() from (scaleUpForRif || scaleUpForMc || scaleUpForLa)
scaleDown : Boolean() from (scaleDownForRif && scaleDownForMc && scaleDownForLa)
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] minReplicas : " + minReplicas))
eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] maxReplicas : " + maxReplicas))
@@ -101,7 +103,6 @@ dialect "mvel"
then
if (scaleUp) {
- log.info("[scale-up] Decided to scale up : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId);
int requiredReplicas = 0;
if (scaleUpForRif) {
int predictedReplicasForRif = $delegator.getPredictedReplicasForStat(minReplicas, rifUpperLimit, rifPredictedValue);
@@ -135,14 +136,28 @@ dialect "mvel"
requiredReplicas = minReplicas;
}
//expand the cluster
- log.info("[scaling] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
- $delegator.delegateExpandCluster($kubernetesClusterContext, requiredReplicas);
+ if (requiredReplicas > nonTerminatedReplicas) {
+ log.info("[scaling] Decided to scale-up : [cluster] " + clusterId);
+ log.info("[scaling-up] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
+ $delegator.delegateUpdateContainers($kubernetesClusterContext, requiredReplicas);
+ }
+ //shrink the cluster
+ if (requiredReplicas < nonTerminatedReplicas) {
+ log.info("[scaling] Decided to scale-down : [cluster] " + clusterId);
+ log.info("[scaling-down] " + " [cluster] " + clusterId + " valid number of replicas to shrink : " + requiredReplicas);
+ $delegator.delegateUpdateContainers($kubernetesClusterContext, requiredReplicas);
+ }
+ if (requiredReplicas == nonTerminatedReplicas) {
+ log.info("[scaling] " + " [cluster] " + clusterId + "non terminated replicas and predicted replicas are same");
+ }
+
} else if (scaleDown) {
- log.debug("[scale-down] Decided to scale down : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId);
+ log.info("[scaling] Decided to scale-down : [cluster] " + clusterId);
+ log.info("[scaling-down] " + " [cluster] " + clusterId + " shrink the cluster to minReplicas : " + minReplicas);
//shrink the cluster to minReplicas
- $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas);
+ $delegator.delegateUpdateContainers($kubernetesClusterContext, minReplicas);
} else {
- log.debug("[scaling] No decision made to either scale up or down ... ");
+ log.info("[scaling] No decision made to either scale up or down ... ");
}
end
[34/50] [abbrv] git commit: Introducing a new exception to throw when
member termination fails.
Posted by ni...@apache.org.
Introducing a new exception to throw when member termination fails.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/98ccb707
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/98ccb707
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/98ccb707
Branch: refs/heads/master
Commit: 98ccb707a74f9ff9e38220aaf217babd5e4a73f0
Parents: 192228e
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 09:47:40 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../MemberTerminationFailedException.java | 48 ++++++++++++++++++++
1 file changed, 48 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/98ccb707/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/MemberTerminationFailedException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/MemberTerminationFailedException.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/MemberTerminationFailedException.java
new file mode 100644
index 0000000..1db68b5
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/MemberTerminationFailedException.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.exception;
+
+
+/**
+ * Throws when a member termination fails.
+ *
+ */
+public class MemberTerminationFailedException extends Exception {
+
+ private static final long serialVersionUID = -7883324379272628566L;
+ private String message;
+
+ public MemberTerminationFailedException(String msg) {
+ super(msg);
+ this.setMessage(msg);
+ }
+
+ public MemberTerminationFailedException(String msg, Exception ex) {
+ super(msg, ex);
+ this.setMessage(msg);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
[46/50] [abbrv] git commit: Return member contexts from termination
related APIs and allocate IPs in a scheduled executor task.
Posted by ni...@apache.org.
Return member contexts from termination related APIs and allocate IPs in a scheduled executor task.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7373d86c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7373d86c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7373d86c
Branch: refs/heads/master
Commit: 7373d86c8ee71f78fb9833da06989872f4e2535e
Parents: e3d528f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:50:15 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 378 +++++++++----------
.../interfaces/CloudControllerService.java | 8 +-
.../jcloud/ComputeServiceBuilderUtil.java | 1 -
3 files changed, 190 insertions(+), 197 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/7373d86c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index be8702b..25e19ce 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -25,6 +25,7 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable;
+import org.apache.stratos.cloud.controller.concurrent.ScheduledThreadExecutor;
import org.apache.stratos.cloud.controller.concurrent.ThreadExecutor;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.exception.*;
@@ -42,6 +43,7 @@ import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
import org.apache.stratos.cloud.controller.topology.TopologyManager;
import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.cloud.controller.util.PodActivationWatcher;
import org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.kubernetes.client.KubernetesApiClient;
@@ -74,7 +76,7 @@ import java.util.concurrent.Future;
*/
public class CloudControllerServiceImpl implements CloudControllerService {
- private static final Log log = LogFactory
+ private static final Log LOG = LogFactory
.getLog(CloudControllerServiceImpl.class);
private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder
.getInstance();
@@ -103,20 +105,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
currentData.setCartridges(serializedObj.getCartridges());
currentData.setKubClusterIdToKubClusterContext(serializedObj.getKubClusterIdToKubClusterContext());
- if(log.isDebugEnabled()) {
+ if(LOG.isDebugEnabled()) {
- log.debug("Cloud Controller Data is retrieved from registry.");
+ LOG.debug("Cloud Controller Data is retrieved from registry.");
}
} else {
- if(log.isDebugEnabled()) {
+ if(LOG.isDebugEnabled()) {
- log.debug("Cloud Controller Data cannot be found in registry.");
+ LOG.debug("Cloud Controller Data cannot be found in registry.");
}
}
} catch (Exception e) {
String msg = "Unable to acquire data from Registry. Hence, any historical data will not get reflected.";
- log.warn(msg, e);
+ LOG.warn(msg, e);
}
}
@@ -124,26 +126,23 @@ public class CloudControllerServiceImpl implements CloudControllerService {
public void deployCartridgeDefinition(CartridgeConfig cartridgeConfig) throws InvalidCartridgeDefinitionException,
InvalidIaasProviderException {
- if (cartridgeConfig == null) {
- String msg = "Invalid Cartridge Definition: Definition is null.";
- log.error(msg);
- throw new IllegalArgumentException(msg);
-
- }
+
+ handleNullObject(cartridgeConfig, "Invalid Cartridge Definition: Definition is null.");
- if(log.isDebugEnabled()){
- log.debug("Cartridge definition: " + cartridgeConfig.toString());
+ if(LOG.isDebugEnabled()){
+ LOG.debug("Cartridge definition: " + cartridgeConfig.toString());
}
Cartridge cartridge = null;
try {
+ // cartridge can never be null
cartridge = CloudControllerUtil.toCartridge(cartridgeConfig);
} catch (Exception e) {
String msg =
"Invalid Cartridge Definition: Cartridge Type: " +
cartridgeConfig.getType()+
". Cause: Cannot instantiate a Cartridge Instance with the given Config. "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new InvalidCartridgeDefinitionException(msg, e);
}
@@ -154,7 +153,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg = "Invalid Cartridge Definition: Cartridge Type: "
+ cartridgeConfig.getType()
+ ". Cause: Iaases of this Cartridge is null or empty.";
- log.error(msg);
+ LOG.error(msg);
throw new InvalidCartridgeDefinitionException(msg);
}
@@ -187,7 +186,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
TopologyBuilder.handleServiceCreated(cartridgeList);
// transaction ends
- log.info("Successfully deployed the Cartridge definition: " + cartridgeType);
+ LOG.info("Successfully deployed the Cartridge definition: " + cartridgeType);
}
private void populateNewCartridge(Cartridge cartridge,
@@ -203,8 +202,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String partitionId = entry.getKey();
IaasProvider oldIaasProvider = entry.getValue();
if (newIaasProviders.contains(oldIaasProvider)) {
- if (log.isDebugEnabled()) {
- log.debug("Copying a partition from the Cartridge that is undeployed, to the new Cartridge. "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Copying a partition from the Cartridge that is undeployed, to the new Cartridge. "
+ "[partition id] : "+partitionId+" [cartridge type] "+cartridge.getType() );
}
cartridge.addIaasProvider(partitionId, newIaasProviders.get(newIaasProviders.indexOf(oldIaasProvider)));
@@ -221,8 +220,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// invalidate partition validation cache
dataHolder.removeFromCartridgeTypeToPartitionIds(cartridgeType);
- if (log.isDebugEnabled()) {
- log.debug("Partition cache invalidated for cartridge "+cartridgeType);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Partition cache invalidated for cartridge "+cartridgeType);
}
persist();
@@ -232,14 +231,14 @@ public class CloudControllerServiceImpl implements CloudControllerService {
cartridgeList.add(cartridge);
TopologyBuilder.handleServiceRemoved(cartridgeList);
- if(log.isInfoEnabled()) {
- log.info("Successfully undeployed the Cartridge definition: " + cartridgeType);
+ if(LOG.isInfoEnabled()) {
+ LOG.info("Successfully undeployed the Cartridge definition: " + cartridgeType);
}
return;
}
}
String msg = "Cartridge [type] "+cartridgeType+" is not a deployed Cartridge type.";
- log.error(msg);
+ LOG.error(msg);
throw new InvalidCartridgeTypeException(msg);
}
@@ -247,41 +246,28 @@ public class CloudControllerServiceImpl implements CloudControllerService {
public MemberContext startInstance(MemberContext memberContext) throws
UnregisteredCartridgeException, InvalidIaasProviderException {
- if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:startInstance");
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("CloudControllerServiceImpl:startInstance");
}
- if (memberContext == null) {
- String msg = "Instance start-up failed. Member is null.";
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
+ handleNullObject(memberContext, "Instance start-up failed. Member is null.");
String clusterId = memberContext.getClusterId();
Partition partition = memberContext.getPartition();
- if(log.isDebugEnabled()) {
- log.debug("Received an instance spawn request : " + memberContext.toString());
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("Received an instance spawn request : " + memberContext);
}
Template template = null;
- if (partition == null) {
- String msg =
- "Instance start-up failed. Specified Partition is null. " +
- memberContext.toString();
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
+ handleNullObject(partition, "Instance start-up failed. Specified Partition is null. " +
+ memberContext);
String partitionId = partition.getId();
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
- if (ctxt == null) {
- String msg = "Instance start-up failed. Invalid cluster id. " + memberContext.toString();
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
+ handleNullObject(ctxt, "Instance start-up failed. Invalid cluster id. " + memberContext);
String cartridgeType = ctxt.getCartridgeType();
@@ -291,7 +277,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType +". "+
memberContext.toString();
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
@@ -300,8 +286,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
IaasProvider iaasProvider = cartridge.getIaasProviderOfPartition(partitionId);
if (iaasProvider == null) {
- if (log.isDebugEnabled()) {
- log.debug("IaasToPartitionMap "+cartridge.hashCode()
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("IaasToPartitionMap "+cartridge.hashCode()
+ " for cartridge "+cartridgeType+ " and for partition: "+partitionId);
}
String msg = "Instance start-up failed. "
@@ -314,7 +300,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ cartridge.getPartitionToIaasProvider().keySet()
.toString() + ". " + memberContext.toString()
+ ". ";
- log.fatal(msg);
+ LOG.fatal(msg);
throw new InvalidIaasProviderException(msg);
}
String type = iaasProvider.getType();
@@ -339,20 +325,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
Iaas iaas = iaasProvider.getIaas();
- if (log.isDebugEnabled()) {
- log.debug("Payload: " + payload.toString());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Payload: " + payload.toString());
}
if (iaas == null) {
- if(log.isDebugEnabled()) {
- log.debug("Iaas is null of Iaas Provider: "+type+". Trying to build IaaS...");
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("Iaas is null of Iaas Provider: "+type+". Trying to build IaaS...");
}
try {
iaas = CloudControllerUtil.getIaas(iaasProvider);
} catch (InvalidIaasProviderException e) {
String msg ="Instance start up failed. "+memberContext.toString()+
"Unable to build Iaas of this IaasProvider [Provider] : " + type+". Cause: "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new InvalidIaasProviderException(msg, e);
}
@@ -383,24 +369,24 @@ public class CloudControllerServiceImpl implements CloudControllerService {
"Failed to start an instance. " +
memberContext.toString() +
". Reason : Jclouds Template is null for iaas provider [type]: "+iaasProvider.getType();
- log.error(msg);
+ LOG.error(msg);
throw new InvalidIaasProviderException(msg);
}
//Start instance start up in a new thread
ThreadExecutor exec = ThreadExecutor.getInstance();
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller is starting the instance start up thread.");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is starting the instance start up thread.");
}
exec.execute(new JcloudsInstanceCreator(memberContext, iaasProvider, cartridgeType));
- log.info("Instance is successfully starting up. "+memberContext.toString());
+ LOG.info("Instance is successfully starting up. "+memberContext.toString());
return memberContext;
} catch (Exception e) {
String msg = "Failed to start an instance. " + memberContext.toString()+" Cause: "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new IllegalStateException(msg, e);
}
@@ -414,8 +400,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String snapshotId = volume.getSnapshotId();
if(StringUtils.isNotEmpty(volume.getVolumeId())){
// volumeID is specified, so not creating additional volumes
- if(log.isDebugEnabled()){
- log.debug("Volume creation is skipping since a volume ID is specified. [Volume ID]" + volume.getVolumeId());
+ if(LOG.isDebugEnabled()){
+ LOG.debug("Volume creation is skipping since a volume ID is specified. [Volume ID]" + volume.getVolumeId());
}
volume.setId(volume.getVolumeId());
}else{
@@ -431,8 +417,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
StringBuilder persistencePayload = new StringBuilder();
if(isPersistenceMappingAvailable(ctx)){
for(Volume volume : ctx.getVolumes()){
- if(log.isDebugEnabled()){
- log.debug("Adding persistence mapping " + volume.toString());
+ if(LOG.isDebugEnabled()){
+ LOG.debug("Adding persistence mapping " + volume.toString());
}
if(persistencePayload.length() != 0) {
persistencePayload.append("|");
@@ -445,8 +431,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
persistencePayload.append(volume.getMappingPath());
}
}
- if(log.isDebugEnabled()){
- log.debug("Persistence payload is" + persistencePayload.toString());
+ if(LOG.isDebugEnabled()){
+ LOG.debug("Persistence payload is" + persistencePayload.toString());
}
return persistencePayload;
}
@@ -470,7 +456,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
} catch (RegistryException e) {
String msg = "Failed to persist the Cloud Controller data in registry. Further, transaction roll back also failed.";
- log.fatal(msg);
+ LOG.fatal(msg);
throw new CloudControllerException(msg, e);
}
}
@@ -486,7 +472,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if(memberId == null) {
String msg = "Termination failed. Null member id.";
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -494,7 +480,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if(ctxt == null) {
String msg = "Termination failed. Invalid Member Id: "+memberId;
- log.error(msg);
+ LOG.error(msg);
throw new InvalidMemberException(msg);
}
@@ -524,7 +510,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// these will never be null, since we do not add null values for these.
Cartridge cartridge = dataHolder.getCartridge(cartridgeType);
- log.info("Starting to terminate an instance with member id : " + memberId +
+ LOG.info("Starting to terminate an instance with member id : " + memberId +
" in partition id: " + partitionId + " of cluster id: " + clusterId +
" and of cartridge type: " + cartridgeType);
@@ -533,7 +519,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
"Termination of Member Id: " + memberId + " failed. " +
"Cannot find a matching Cartridge for type: " +
cartridgeType;
- log.error(msg);
+ LOG.error(msg);
throw new InvalidCartridgeTypeException(msg);
}
@@ -543,7 +529,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Termination failed. Cannot find a node id for Member Id: " +
memberId;
- log.error(msg);
+ LOG.error(msg);
throw new InvalidMemberException(msg);
}
@@ -558,7 +544,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
} catch (Exception e) {
String msg =
"Instance termination failed. "+ctxt.toString();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new CloudControllerException(msg, e);
}
@@ -600,23 +586,23 @@ public class CloudControllerServiceImpl implements CloudControllerService {
.getComputeService();
Template template = iaasProvider.getTemplate();
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller is delegating request to start an instance for "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is delegating request to start an instance for "
+ memberContext + " to Jclouds layer.");
}
// create and start a node
Set<? extends NodeMetadata> nodes = computeService
.createNodesInGroup(group, 1, template);
node = nodes.iterator().next();
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller received a response for the request to start "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller received a response for the request to start "
+ memberContext + " from Jclouds layer.");
}
if (node == null) {
String msg = "Null response received for instance start-up request to Jclouds.\n"
+ memberContext.toString();
- log.error(msg);
+ LOG.error(msg);
throw new IllegalStateException(msg);
}
@@ -625,13 +611,13 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (nodeId == null) {
String msg = "Node id of the starting instance is null.\n"
+ memberContext.toString();
- log.fatal(msg);
+ LOG.fatal(msg);
throw new IllegalStateException(msg);
}
memberContext.setNodeId(nodeId);
- if (log.isDebugEnabled()) {
- log.debug("Node id was set. " + memberContext.toString());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Node id was set. " + memberContext.toString());
}
// attach volumes
@@ -649,7 +635,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
} catch (Exception e) {
// continue without throwing an exception, since
// there is an instance already running
- log.error("Attaching Volume to Instance [ "
+ LOG.error("Attaching Volume to Instance [ "
+ instanceId + " ] failed!", e);
}
}
@@ -658,13 +644,13 @@ public class CloudControllerServiceImpl implements CloudControllerService {
} catch (Exception e) {
String msg = "Failed to start an instance. " + memberContext.toString()+" Cause: "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new IllegalStateException(msg, e);
}
try{
- if (log.isDebugEnabled()) {
- log.debug("IP allocation process started for "+memberContext);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("IP allocation process started for "+memberContext);
}
String autoAssignIpProp =
iaasProvider.getProperty(CloudControllerConstants.AUTO_ASSIGN_IP_PROPERTY);
@@ -682,8 +668,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// check if floating ip is well defined in cartridge definition
if (pre_defined_ip != null) {
if (isValidIpAddress(pre_defined_ip)) {
- if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:IpAllocator:pre_defined_ip: invoking associatePredefinedAddress" + pre_defined_ip);
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("CloudControllerServiceImpl:IpAllocator:pre_defined_ip: invoking associatePredefinedAddress" + pre_defined_ip);
}
ip = iaas.associatePredefinedAddress(node, pre_defined_ip);
@@ -692,7 +678,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg = "Error occurred while allocating predefined floating ip address: " + pre_defined_ip +
" / allocated ip:" + ip +
" - terminating node:" + memberContext.toString();
- log.error(msg);
+ LOG.error(msg);
// terminate instance
terminate(iaasProvider,
node.getId(), memberContext);
@@ -701,7 +687,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
} else {
String msg = "Invalid floating ip address configured: " + pre_defined_ip +
" - terminating node:" + memberContext.toString();
- log.error(msg);
+ LOG.error(msg);
// terminate instance
terminate(iaasProvider,
node.getId(), memberContext);
@@ -709,8 +695,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
} else {
- if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:IpAllocator:no (valid) predefined floating ip configured, "
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("CloudControllerServiceImpl:IpAllocator:no (valid) predefined floating ip configured, "
+ "selecting available one from pool");
}
// allocate an IP address - manual IP assigning mode
@@ -718,7 +704,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (ip != null) {
memberContext.setAllocatedIpAddress(ip);
- log.info("Allocated an ip address: "
+ LOG.info("Allocated an ip address: "
+ memberContext.toString());
}
}
@@ -735,7 +721,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ip = node.getPublicAddresses().iterator().next();
publicIp = ip;
memberContext.setPublicIpAddress(ip);
- log.info("Retrieving Public IP Address : " + memberContext.toString());
+ LOG.info("Retrieving Public IP Address : " + memberContext.toString());
}
// private IP
@@ -743,7 +729,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
node.getPrivateAddresses().iterator().hasNext()) {
ip = node.getPrivateAddresses().iterator().next();
memberContext.setPrivateIpAddress(ip);
- log.info("Retrieving Private IP Address. " + memberContext.toString());
+ LOG.info("Retrieving Private IP Address. " + memberContext.toString());
}
dataHolder.addMemberContext(memberContext);
@@ -767,17 +753,17 @@ public class CloudControllerServiceImpl implements CloudControllerService {
cartridgeType,
MemberStatus.Created.toString(),
node);
- if (log.isDebugEnabled()) {
- log.debug("Node details: " + node.toString());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Node details: " + node.toString());
}
- if (log.isDebugEnabled()) {
- log.debug("IP allocation process ended for "+memberContext);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("IP allocation process ended for "+memberContext);
}
} catch (Exception e) {
String msg = "Error occurred while allocating an ip address. " + memberContext.toString();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new CloudControllerException(msg, e);
}
@@ -793,12 +779,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
@Override
public void terminateAllInstances(String clusterId) throws InvalidClusterException {
- log.info("Starting to terminate all instances of cluster : "
+ LOG.info("Starting to terminate all instances of cluster : "
+ clusterId);
if(clusterId == null) {
String msg = "Instance termination failed. Cluster id is null.";
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -806,7 +792,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if(ctxts == null) {
String msg = "Instance termination failed. No members found for cluster id: "+clusterId;
- log.warn(msg);
+ LOG.warn(msg);
return;
}
@@ -836,7 +822,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Instance termination failed. " +ctxt.toString() +
". Cause: Unable to build Iaas of this " + iaasProvider.toString();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new CloudControllerException(msg, e);
}
@@ -853,7 +839,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
iaas.releaseAddress(ctxt.getAllocatedIpAddress());
}
- log.info("Member is terminated: "+ctxt.toString());
+ LOG.info("Member is terminated: "+ctxt.toString());
return iaasProvider;
}
@@ -870,8 +856,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
Iaas iaas = iaasProvider.getIaas();
iaas.detachVolume(ctxt.getInstanceId(), volumeId);
} catch (ResourceNotFoundException ignore) {
- if(log.isDebugEnabled()) {
- log.debug(ignore);
+ if(LOG.isDebugEnabled()) {
+ LOG.debug(ignore);
}
}
}
@@ -914,7 +900,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if(cartridgeType == null || clusterId == null || payload == null || hostName == null) {
String msg = "Null Argument/s detected: Cartridge type: "+cartridgeType+", " +
"Cluster Id: "+clusterId+", Payload: "+payload+", Host name: "+hostName;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -923,7 +909,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg = "Registration of cluster: "+clusterId+
" failed. - Unregistered Cartridge type: " + cartridgeType;
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
@@ -940,7 +926,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
persist();
- log.info("Successfully registered: "+registrant);
+ LOG.info("Successfully registered: "+registrant);
return true;
}
@@ -1050,7 +1036,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg = "Cannot find a Cartridge having a type of "
+ cartridgeType + ". Hence unable to find information.";
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
@@ -1062,7 +1048,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (ctxt == null) {
String msg = "Instance start-up failed. Invalid cluster id. " + clusterId;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1073,7 +1059,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (cartridge == null) {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType +". ";
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredClusterException(msg);
}
@@ -1091,7 +1077,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ClusterContext ctxt = dataHolder.getClusterContext(clusterId_);
if(ctxt == null) {
String msg = "Unregistration of service cluster failed. Cluster not found: " + clusterId_;
- log.error(msg);
+ LOG.error(msg);
}
Collection<Member> members = TopologyManager.getTopology().
getService(ctxt.getCartridgeType()).getCluster(clusterId_).getMembers();
@@ -1118,7 +1104,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
terminateInstance(member.getMemberId());
} catch (Exception e) {
// we are not gonna stop the execution due to errors.
- log.warn("Instance termination failed of member [id] " + member.getMemberId(), e);
+ LOG.warn("Instance termination failed of member [id] " + member.getMemberId(), e);
}
}
}
@@ -1129,7 +1115,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ClusterContext ctxt = dataHolder.getClusterContext(clusterId_);
if(ctxt == null) {
String msg = "Unregistration of service cluster failed. Cluster not found: " + clusterId_;
- log.error(msg);
+ LOG.error(msg);
}
Collection<Member> members = TopologyManager.getTopology().
getService(ctxt.getCartridgeType()).getCluster(clusterId_).getMembers();
@@ -1141,7 +1127,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
CloudControllerUtil.sleep(1000);
}
- log.info("Unregistration of service cluster: " + clusterId_);
+ LOG.info("Unregistration of service cluster: " + clusterId_);
deleteVolumes(ctxt);
onClusterRemoval(clusterId_);
}
@@ -1164,8 +1150,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
volume.setId(null);
}
} catch(Exception ignore) {
- if(log.isErrorEnabled()) {
- log.error("Error while deleting volume [id] "+ volume.getId(), ignore);
+ if(LOG.isErrorEnabled()) {
+ LOG.error("Error while deleting volume [id] "+ volume.getId(), ignore);
}
}
}
@@ -1190,7 +1176,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
terminateAllContainers(clusterId);
} catch (InvalidClusterException e) {
String msg = "Docker instance termination fails for cluster: "+clusterId;
- log.error(msg, e);
+ LOG.error(msg, e);
throw new UnregisteredClusterException(msg, e);
}
// send cluster removal notifications and update the state
@@ -1209,8 +1195,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// cache hit for this cartridge
// get list of partitions
validatedPartitions = validatedCache.get(cartridgeType);
- if (log.isDebugEnabled()) {
- log.debug("Partition validation cache hit for cartridge type: "+cartridgeType);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Partition validation cache hit for cartridge type: "+cartridgeType);
}
}
@@ -1218,15 +1204,15 @@ public class CloudControllerServiceImpl implements CloudControllerService {
Map<String, IaasProvider> partitionToIaasProviders =
new ConcurrentHashMap<String, IaasProvider>();
- if (log.isDebugEnabled()) {
- log.debug("Deployment policy validation started for cartridge type: "+cartridgeType);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Deployment policy validation started for cartridge type: "+cartridgeType);
}
Cartridge cartridge = dataHolder.getCartridge(cartridgeType);
if (cartridge == null) {
String msg = "Invalid Cartridge Type: " + cartridgeType;
- log.error(msg);
+ LOG.error(msg);
throw new InvalidCartridgeTypeException(msg);
}
@@ -1260,11 +1246,11 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// add to cache
this.dataHolder.addToCartridgeTypeToPartitionIdMap(cartridgeType, partitionId);
- if (log.isDebugEnabled()) {
- log.debug("Partition "+partitionId+" added to the cache against cartridge type: "+cartridgeType);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Partition "+partitionId+" added to the cache against cartridge type: "+cartridgeType);
}
} catch (Exception e) {
- log.error(e.getMessage(), e);
+ LOG.error(e.getMessage(), e);
throw new InvalidPartitionException(e.getMessage(), e);
}
}
@@ -1275,7 +1261,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// persist data
persist();
- log.info("All partitions "+CloudControllerUtil.getPartitionIds(partitions)+
+ LOG.info("All partitions "+CloudControllerUtil.getPartitionIds(partitions)+
" were validated successfully, against the Cartridge: "+cartridgeType);
return true;
@@ -1299,7 +1285,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Invalid Partition - " + partition.toString()+". Cause: Iaas Provider " +
"is null for Partition Provider: "+provider;
- log.error(msg);
+ LOG.error(msg);
throw new InvalidPartitionException(msg);
}
@@ -1313,7 +1299,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Invalid Partition - " + partition.toString() +
". Cause: Unable to build Iaas of this IaasProvider [Provider] : " + provider+". "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new InvalidPartitionException(msg, e);
}
@@ -1336,26 +1322,26 @@ public class CloudControllerServiceImpl implements CloudControllerService {
public MemberContext[] startContainers(ContainerClusterContext containerClusterContext)
throws UnregisteredCartridgeException {
- if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:startContainers");
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("CloudControllerServiceImpl:startContainers");
}
if (containerClusterContext == null) {
String msg = "Instance start-up failed. ContainerClusterContext is null.";
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
String clusterId = containerClusterContext.getClusterId();
- if(log.isDebugEnabled()) {
- log.debug("Received an instance spawn request : " + containerClusterContext.toString());
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("Received an instance spawn request : " + containerClusterContext.toString());
}
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
if (ctxt == null) {
String msg = "Instance start-up failed. Invalid cluster id. " + containerClusterContext.toString();
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1367,7 +1353,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType +". "+
containerClusterContext.toString();
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
@@ -1385,15 +1371,15 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ContainerClusterContextToReplicationController controllerFunction = new ContainerClusterContextToReplicationController();
ReplicationController controller = controllerFunction.apply(containerClusterContext);
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller is delegating request to start a replication controller "+controller+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is delegating request to start a replication controller "+controller+
" for "+ containerClusterContext + " to Kubernetes layer.");
}
kubApi.createReplicationController(controller);
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller successfully started the controller "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller successfully started the controller "
+ controller + " via Kubernetes layer.");
}
@@ -1401,8 +1387,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ContainerClusterContextToKubernetesService serviceFunction = new ContainerClusterContextToKubernetesService();
Service service = serviceFunction.apply(containerClusterContext);
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller is delegating request to start a service "+service+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is delegating request to start a service "+service+
" for "+ containerClusterContext + " to Kubernetes layer.");
}
@@ -1412,8 +1398,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
ctxt.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, service.getPort());
dataHolder.addClusterContext(ctxt);
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller successfully started the service "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller successfully started the service "
+ controller + " via Kubernetes layer.");
}
@@ -1427,9 +1413,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
for (int i = 0; i < expectedCount ; i++) {
newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
- if (log.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
- log.debug("Pods Count: "+newlyCreatedPods.length+" for cluster: "+clusterId);
+ LOG.debug("Pods Count: "+newlyCreatedPods.length+" for cluster: "+clusterId);
}
if(newlyCreatedPods.length == expectedCount) {
break;
@@ -1437,9 +1423,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
Thread.sleep(5000);
}
- if (log.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
- log.debug(String.format("Pods created : %s for cluster : %s",newlyCreatedPods.length, clusterId));
+ LOG.debug(String.format("Pods created : %s for cluster : %s",newlyCreatedPods.length, clusterId));
}
List<MemberContext> memberContexts = new ArrayList<MemberContext>();
@@ -1455,15 +1441,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
.getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
String.valueOf(service.getPort())));
- dataHolder.addMemberContext(context);
-
- // trigger topology
- // update the topology with the newly spawned member
- TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
- pod.getCurrentState().getPodIP(), pod.getCurrentState().getHostIP(), context);
- // publish data
- // TODO
-// CartridgeInstanceDataPublisher.publish(context.getMemberId(), null, null, context.getClusterId(), cartridgeType, MemberStatus.Created.toString(), node);
+ // wait till Pod status turns to running and send member spawned.
+ ScheduledThreadExecutor exec = ScheduledThreadExecutor.getInstance();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is starting the instance start up thread.");
+ }
+ dataHolder.addScheduledFutureJob(context.getMemberId(), exec.schedule(new PodActivationWatcher(pod.getId(), context, kubApi), 5000));
memberContexts.add(context);
}
@@ -1471,13 +1454,13 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// persist in registry
persist();
- log.info("Kubernetes entities are successfully starting up. "+memberContexts);
+ LOG.info("Kubernetes entities are successfully starting up. "+memberContexts);
return memberContexts.toArray(new MemberContext[0]);
} catch (Exception e) {
String msg = "Failed to start an instance. " + containerClusterContext.toString()+" Cause: "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new IllegalStateException(msg, e);
}
}
@@ -1489,7 +1472,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (propVal == null) {
String msg = "Instance start-up failed. Cannot find '"+
StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1503,7 +1486,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (propVal == null) {
String msg = "Instance start-up failed. Cannot find '"+
StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1534,14 +1517,14 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
@Override
- public void terminateAllContainers(String clusterId)
+ public MemberContext[] terminateAllContainers(String clusterId)
throws InvalidClusterException {
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
if (ctxt == null) {
String msg = "Kubernetes units temrination failed. Invalid cluster id. "+clusterId;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1551,7 +1534,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (kubernetesClusterId == null) {
String msg = "Kubernetes units termination failed. Cannot find '"+
StratosConstants.KUBERNETES_CLUSTER_ID+"'. " + ctxt;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1560,7 +1543,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (kubClusterContext == null) {
String msg = "Kubernetes units termination failed. Cannot find a matching Kubernetes Cluster for cluster id: "
+kubernetesClusterId;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1570,7 +1553,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.deleteService(CloudControllerUtil.getCompatibleId(clusterId));
} catch (KubernetesClientException e) {
// we're not going to throw this error, but proceed with other deletions
- log.error("Failed to delete Kubernetes service with id: "+clusterId, e);
+ LOG.error("Failed to delete Kubernetes service with id: "+clusterId, e);
}
// set replicas=0 for the replication controller
@@ -1578,7 +1561,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.updateReplicationController(clusterId, 0);
} catch (KubernetesClientException e) {
// we're not going to throw this error, but proceed with other deletions
- log.error("Failed to update Kubernetes Controller with id: "+clusterId, e);
+ LOG.error("Failed to update Kubernetes Controller with id: "+clusterId, e);
}
// delete pods forcefully
@@ -1595,12 +1578,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.deletePod(pod.getId());
} catch (KubernetesClientException ignore) {
// we can't do nothing here
- log.warn(String.format("Failed to delete Pod [%s] forcefully!", pod.getId()));
+ LOG.warn(String.format("Failed to delete Pod [%s] forcefully!", pod.getId()));
}
}
} catch (KubernetesClientException e) {
// we're not going to throw this error, but proceed with other deletions
- log.error("Failed to delete pods forcefully for cluster: "+clusterId, e);
+ LOG.error("Failed to delete pods forcefully for cluster: "+clusterId, e);
}
// delete the replication controller.
@@ -1608,7 +1591,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.deleteReplicationController(clusterId);
} catch (KubernetesClientException e) {
String msg = "Failed to delete Kubernetes Controller with id: "+clusterId;
- log.error(msg, e);
+ LOG.error(msg, e);
throw new InvalidClusterException(msg, e);
}
@@ -1619,29 +1602,35 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubClusterContext.deallocateHostPort(Integer
.parseInt(allocatedPort));
} else {
- log.warn("Host port dealloacation failed due to a missing property: "
+ LOG.warn("Host port dealloacation failed due to a missing property: "
+ StratosConstants.ALLOCATED_SERVICE_HOST_PORT);
}
- dataHolder.removeMemberContextsOfCluster(clusterId);
+ List<MemberContext> removedMembers = dataHolder.removeMemberContextsOfCluster(clusterId);
+
+ for (MemberContext memberContext : removedMembers) {
+ logTermination(memberContext);
+ }
// persist
persist();
+
+ return removedMembers.toArray(new MemberContext[0]);
}
@Override
public MemberContext[] updateContainers(String clusterId, int replicas)
throws UnregisteredCartridgeException {
- if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:updateContainers for cluster : "+clusterId);
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("CloudControllerServiceImpl:updateContainers for cluster : "+clusterId);
}
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
if (ctxt == null) {
String msg = "Instance start-up failed. Invalid cluster id. " + clusterId;
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -1653,7 +1642,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType
+". [cluster id] "+ clusterId;
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
@@ -1666,22 +1655,22 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String msg =
"Instance start-up failed. No matching Kubernetes Context Found for [id] "+kubernetesClusterId
+". [cluster id] "+ clusterId;
- log.error(msg);
+ LOG.error(msg);
throw new UnregisteredCartridgeException(msg);
}
KubernetesApiClient kubApi = kubClusterContext.getKubApi();
// update the replication controller - cluster id = replication controller id
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller is delegating request to update a replication controller "+clusterId+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is delegating request to update a replication controller "+clusterId+
" to Kubernetes layer.");
}
kubApi.updateReplicationController(clusterId, replicas);
- if (log.isDebugEnabled()) {
- log.debug("Cloud Controller successfully updated the controller "
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller successfully updated the controller "
+ clusterId + " via Kubernetes layer.");
}
@@ -1695,9 +1684,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
for (int i = 0; i < replicas ; i++) {
allPods = kubApi.getSelectedPods(new Label[]{l});
- if (log.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
- log.debug("Pods Count: "+allPods.length+" for cluster: "+clusterId);
+ LOG.debug("Pods Count: "+allPods.length+" for cluster: "+clusterId);
}
if(allPods.length == replicas) {
break;
@@ -1705,9 +1694,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
Thread.sleep(5000);
}
- if (log.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
- log.debug(String.format("Pods created : %s for cluster : %s",allPods.length, clusterId));
+ LOG.debug(String.format("Pods created : %s for cluster : %s",allPods.length, clusterId));
}
List<MemberContext> memberContexts = new ArrayList<MemberContext>();
@@ -1744,19 +1733,19 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// persist in registry
persist();
- log.info("Kubernetes entities are successfully starting up. "+memberContexts);
+ LOG.info("Kubernetes entities are successfully starting up. "+memberContexts);
return memberContexts.toArray(new MemberContext[0]);
} catch (Exception e) {
String msg = "Failed to update containers belong to cluster " + clusterId+". Cause: "+e.getMessage();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new IllegalStateException(msg, e);
}
}
@Override
- public void terminateContainer(String memberId) throws MemberTerminationFailedException {
+ public MemberContext terminateContainer(String memberId) throws MemberTerminationFailedException {
handleNullObject(memberId, "Failed to terminate member. Invalid Member id. [Member id] " + memberId);
@@ -1789,19 +1778,22 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// member id = pod id
kubApi.deletePod(memberId);
- dataHolder.removeMemberContext(memberId, clusterId);
- // persist
- persist();
+ MemberContext removedMemberContext = dataHolder.removeMemberContext(memberId, clusterId);
+
+ logTermination(removedMemberContext);
+
+ return removedMemberContext;
+
} catch (KubernetesClientException e) {
String msg = String.format("Failed to terminate member [Member id] %s", memberId);
- log.error(msg, e);
+ LOG.error(msg, e);
throw new MemberTerminationFailedException(msg, e);
}
}
private void handleNullObject(Object obj, String errorMsg) {
if (obj == null) {
- log.error(errorMsg);
+ LOG.error(errorMsg);
throw new IllegalArgumentException(errorMsg);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/7373d86c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index 398467c..d81eab7 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -133,22 +133,24 @@ public interface CloudControllerService {
/**
* Terminate all containers of the given cluster.
* @param clusterId id of the subjected cluster.
+ * @return terminated {@link MemberContext}s
* @throws InvalidClusterException
*/
- void terminateAllContainers(String clusterId) throws InvalidClusterException;
+ MemberContext[] terminateAllContainers(String clusterId) throws InvalidClusterException;
/**
* Terminate a given member/Kubernetes Pod.
* @param memberId member/Pod id to be terminated.
+ * @return terminated {@link MemberContext}
* @throws MemberTerminationFailedException
*/
- void terminateContainer(String memberId) throws MemberTerminationFailedException;
+ MemberContext terminateContainer(String memberId) throws MemberTerminationFailedException;
/**
* Update the Kubernetes controller created for the given cluster with the specified number of replicas.
* @param clusterId id of the subjected cluster.
* @param replicas total number of replicas to be set to the controller.
- * @return newly created Members if any.
+ * @return newly created Members if any / terminated {@link MemberContext} in scale down scenario.
* @throws InvalidClusterException
*/
MemberContext[] updateContainers(String clusterId, int replicas) throws UnregisteredCartridgeException;
http://git-wip-us.apache.org/repos/asf/stratos/blob/7373d86c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/jcloud/ComputeServiceBuilderUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/jcloud/ComputeServiceBuilderUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/jcloud/ComputeServiceBuilderUtil.java
index ac30f01..d8bda9e 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/jcloud/ComputeServiceBuilderUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/jcloud/ComputeServiceBuilderUtil.java
@@ -47,7 +47,6 @@ public class ComputeServiceBuilderUtil {
private static final Log log = LogFactory.getLog(ComputeServiceBuilderUtil.class);
public static byte[] getUserData(String payloadFileName) {
- // String userData = null;
byte[] bytes = null;
try {
File file = new File(payloadFileName);
[42/50] [abbrv] git commit: Scheduled executor service pool to
schedule tasks in CC.
Posted by ni...@apache.org.
Scheduled executor service pool to schedule tasks in CC.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8f9148dd
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8f9148dd
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8f9148dd
Branch: refs/heads/master
Commit: 8f9148dd81e98f0c4987c795fe381a60f184469e
Parents: 652d398
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:47:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../concurrent/ScheduledThreadExecutor.java | 78 ++++++++++++++++++++
1 file changed, 78 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/8f9148dd/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/ScheduledThreadExecutor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/ScheduledThreadExecutor.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/ScheduledThreadExecutor.java
new file mode 100644
index 0000000..56f2a2c
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/ScheduledThreadExecutor.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.concurrent;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * This class can be used to create a scheduled executor pool, and hand over new jobs to the pool.
+ */
+public class ScheduledThreadExecutor {
+ private ScheduledExecutorService executor;
+
+ private static class Holder {
+ private static final ScheduledThreadExecutor INSTANCE = new ScheduledThreadExecutor();
+ }
+
+ public static ScheduledThreadExecutor getInstance() {
+ return Holder.INSTANCE;
+ }
+
+ private ScheduledThreadExecutor() {
+ executor = Executors.newScheduledThreadPool(50);
+ }
+
+ public ScheduledFuture<?> schedule(Runnable job, int interval){
+ return executor.scheduleAtFixedRate(job, 0, interval, TimeUnit.MILLISECONDS);
+ }
+
+ public List<ScheduledFuture<?>> scheduleAll(Runnable[] jobs, int interval){
+ List<ScheduledFuture<?>> list = new ArrayList<ScheduledFuture<?>>();
+ for (Runnable job : jobs) {
+
+ list.add(this.schedule(job, interval));
+ }
+ return list;
+ }
+
+ public void shutdown() {
+ executor.shutdown(); // Disable new tasks from being submitted
+ try {
+ // Wait a while for existing tasks to terminate
+ if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
+ executor.shutdownNow(); // Cancel currently executing tasks
+ // Wait a while for tasks to respond to being cancelled
+ if (!executor.awaitTermination(60, TimeUnit.SECONDS))
+ System.err.println("Pool did not terminate");
+ }
+ } catch (InterruptedException ie) {
+ // (Re-)Cancel if current thread also interrupted
+ executor.shutdownNow();
+ // Preserve interrupt status
+ Thread.currentThread().interrupt();
+ }
+ }
+
+
+}
[28/50] [abbrv] git commit: RestClient now using a ConnectionManager
pool.
Posted by ni...@apache.org.
RestClient now using a ConnectionManager pool.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6679d063
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6679d063
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6679d063
Branch: refs/heads/master
Commit: 6679d0630ea5a3c356fb9f7febcbd78b7728da25
Parents: 9e25fcd
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:42:49 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/rest/RestClient.java | 47 +++++++++++++-------
1 file changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6679d063/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
index 061c6d6..7d55c70 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
@@ -18,23 +18,30 @@
*/
package org.apache.stratos.kubernetes.client.rest;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.SocketException;
import java.net.URI;
-import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.conn.PoolingClientConnectionManager;
public class RestClient {
private DefaultHttpClient httpClient;
+
+ public RestClient() {
+ PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
+ // Increase max total connection to 200
+ cm.setMaxTotal(200);
+ // Increase default max connection per route to 50
+ cm.setDefaultMaxPerRoute(50);
+
+ httpClient = new DefaultHttpClient(cm);
+ }
/**
* Handle http post request. Return String
@@ -54,9 +61,9 @@ public class RestClient {
* if any errors occur when executing the request
*/
public KubernetesResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
+ HttpPost postRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpPost postRequest = new HttpPost(resourcePath);
+ postRequest = new HttpPost(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -66,7 +73,7 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(postRequest);
}
}
@@ -86,22 +93,22 @@ public class RestClient {
* if any errors occur when executing the request
*/
public KubernetesResponse doGet(URI resourcePath) throws Exception{
+ HttpGet getRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpGet getRequest = new HttpGet(resourcePath);
+ getRequest = new HttpGet(resourcePath);
getRequest.addHeader("Content-Type", "application/json");
KubernetesResponse response = httpClient.execute(getRequest, new KubernetesResponseHandler());
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(getRequest);
}
}
public KubernetesResponse doDelete(URI resourcePath) throws Exception {
+ HttpDelete httpDelete = null;
try {
- httpClient = new DefaultHttpClient();
- HttpDelete httpDelete = new HttpDelete(resourcePath);
+ httpDelete = new HttpDelete(resourcePath);
httpDelete.addHeader("Content-Type", "application/json");
KubernetesResponse response = httpClient.execute(httpDelete, new KubernetesResponseHandler());
@@ -109,15 +116,15 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(httpDelete);
}
}
public KubernetesResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
+ HttpPut putRequest = null;
try {
- httpClient = new DefaultHttpClient();
- HttpPut putRequest = new HttpPut(resourcePath);
+ putRequest = new HttpPut(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -128,8 +135,14 @@ public class RestClient {
return response;
} finally {
- httpClient.getConnectionManager().shutdown();
+ releaseConnection(putRequest);
}
}
+
+ private void releaseConnection(HttpRequestBase request) {
+ if (request != null) {
+ request.releaseConnection();
+ }
+ }
}
\ No newline at end of file
[37/50] [abbrv] git commit: adding terminateContainer logic to AS and
refactoring drools logging
Posted by ni...@apache.org.
adding terminateContainer logic to AS and refactoring drools logging
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4aa518df
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4aa518df
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4aa518df
Branch: refs/heads/master
Commit: 4aa518df76532a9fdc8aeeeb0f5e54af3db5338f
Parents: 67313a1
Author: R-Rajkumar <rr...@gmail.com>
Authored: Fri Oct 10 16:38:52 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/CloudControllerClient.java | 16 ++++++
.../monitor/KubernetesClusterMonitor.java | 33 +++++++++--
.../autoscaler/rule/RuleTasksDelegator.java | 9 +++
.../src/main/conf/container-mincheck.drl | 31 +++++++---
.../src/main/conf/container-scaling.drl | 60 ++++++++++----------
5 files changed, 107 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/4aa518df/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index ce69875..8ec9f8e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -38,6 +38,7 @@ import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidClu
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException;
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidMemberExceptionException;
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidPartitionExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceMemberTerminationFailedExceptionException;
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceStub;
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
@@ -328,4 +329,19 @@ public class CloudControllerClient {
throw new SpawningException(msg, e);
}
}
+
+ public synchronized void terminateContainer(String memberId) throws TerminationException{
+ try {
+ stub.terminateContainer(memberId);
+ } catch (RemoteException e) {
+ String msg = "Error while updating kubernetes controller, cannot communicate with " +
+ "cloud controller service";
+ log.error(msg, e);
+ throw new TerminationException(msg, e);
+ } catch (CloudControllerServiceMemberTerminationFailedExceptionException e) {
+ String msg = "Error while terminating container, member not valid for member id : " + memberId;
+ log.error(msg, e);
+ throw new TerminationException(msg, e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4aa518df/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java
index d90e0b6..9375a8e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesClusterMonitor.java
@@ -381,7 +381,7 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor {
// no need to do anything here
// we will not be receiving this event for containers
- // because we just kill the containers
+ // we will only receive member terminated event
}
@Override
@@ -390,16 +390,39 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor {
// no need to do anything here
// we will not be receiving this event for containers
- // because we just kill the containers
+ // we will only receive member terminated event
}
@Override
public void handleMemberTerminatedEvent(
MemberTerminatedEvent memberTerminatedEvent) {
- // no need to do anything here
- // we will not be receiving this event for containers
- // because we just kill the containers
+ String memberId = memberTerminatedEvent.getMemberId();
+ if (getKubernetesClusterCtxt().removeTerminationPendingMember(memberId)) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Member is removed from termination pending members list: "
+ + "[member] %s", memberId));
+ }
+ } else if (getKubernetesClusterCtxt().removePendingMember(memberId)) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Member is removed from pending members list: "
+ + "[member] %s", memberId));
+ }
+ } else if (getKubernetesClusterCtxt().removeActiveMemberById(memberId)) {
+ log.warn(String.format("Member is in the wrong list and it is removed from "
+ + "active members list", memberId));
+ } else if (getKubernetesClusterCtxt().removeObsoleteMember(memberId)) {
+ log.warn(String.format("Member's obsolated timeout has been expired and "
+ + "it is removed from obsolated members list", memberId));
+ } else {
+ log.warn(String.format("Member is not available in any of the list active, "
+ + "pending and termination pending", memberId));
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Member stat context has been removed successfully: "
+ + "[member] %s", memberId));
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/stratos/blob/4aa518df/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 9d3227a..0a9bde3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -264,6 +264,15 @@ public class RuleTasksDelegator {
log.error("Cannot update kubernetes controller ", e);
}
}
+
+ public void delegateTerminateContainer(KubernetesClusterContext kubernetesClusterContext, String memberId) {
+ try {
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+ ccClient.terminateContainer(memberId);
+ } catch (Throwable e) {
+ log.error("Cannot delete container ", e);
+ }
+ }
public int getPredictedReplicasForStat(int minReplicas, float statUpperLimit, float statPredictedValue) {
if (statUpperLimit == 0) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/4aa518df/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
index 605c553..9798852 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
@@ -26,7 +26,7 @@ global org.apache.stratos.autoscaler.rule.RuleLog log;
global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator;
global java.lang.String clusterId;
-rule "Minimum Rule"
+rule "Container Minimum Rule"
dialect "mvel"
when
$kubernetesClusterContext : KubernetesClusterContext ()
@@ -36,20 +36,37 @@ dialect "mvel"
isServiceClusterCreated : Boolean() from $kubernetesClusterContext.isServiceClusterCreated()
eval(log.debug("Running minimum rule: [kub-cluster] " +kubernetesClusterId + " [cluster] " + clusterId))
- eval(log.debug("[min-check] " + " [cluster] " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
- eval(log.debug("[min-check] " + " [cluster] " + clusterId + " [Replicas] minReplicas : " + minReplicas))
+ eval(log.debug("[min-check] " + " [cluster] : " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
+ eval(log.debug("[min-check] " + " [cluster] : " + clusterId + " [Replicas] minReplicas : " + minReplicas))
eval(nonTerminatedReplicas < minReplicas)
then
if (isServiceClusterCreated) {
// we suceeded calling startContainer() once, can't call it again
- log.info("[min-check] Decided to scale-up : [cluster] " + clusterId);
- log.info("[min-check] " + " [cluster] " + clusterId + " min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas);
+ log.info("[min-check] Decided to scale-up : [cluster] : " + clusterId);
+ log.info("[min-check] " + " [cluster] : " + clusterId + " ; min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas);
$delegator.delegateUpdateContainers($kubernetesClusterContext, minReplicas);
} else {
// we should call startContainer
- log.info("[min-check] Decided to create the cluster : [cluster] " + clusterId);
- log.info("[min-check] " + " [cluster] " + clusterId + " : min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas);
+ log.info("[min-check] Decided to create the cluster : [cluster] : " + clusterId);
+ log.info("[min-check] " + " [cluster] : " + clusterId + " ; min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas);
$delegator.delegateStartContainers($kubernetesClusterContext);
}
end
+rule "Terminate Obsoleted Containers"
+dialect "mvel"
+ when
+ $kubernetesClusterContext : KubernetesClusterContext ()
+ kubernetesClusterId : String() from $kubernetesClusterContext.getKubernetesClusterID()
+ obsoleteReplicas : Integer() from $kubernetesClusterContext.getObsoletedMembers().size()
+
+ eval(log.debug("Running obsolete containers rule [kub-cluster] : " + kubernetesClusterId + " [cluster] : " + clusterId))
+ eval(log.debug("[obsolete-check] " + "[cluster] : " + clusterId + " [Replicas] obsoleteReplicas : " + obsoleteReplicas))
+ eval($kubernetesClusterContext.getObsoletedMembers().keySet().size() > 0)
+ memberId : String() from $kubernetesClusterContext.getObsoletedMembers().keySet()
+ eval(log.debug("[obsolete-check] [kub-cluster] : " + kubernetesClusterId + " [cluster] : " + clusterId + " Member id : " + memberId))
+ then
+ $delegator.delegateTerminateContainer($kubernetesClusterContext, memberId);
+end
+
+
http://git-wip-us.apache.org/repos/asf/stratos/blob/4aa518df/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
index 398049b..46d9aeb 100644
--- a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
@@ -40,7 +40,7 @@ dialect "mvel"
maxReplicas : Integer() from $kubernetesClusterContext.getMaxReplicas()
nonTerminatedReplicas : Integer() from $kubernetesClusterContext.getNonTerminatedMemberCount()
- eval(log.debug("Running scaling rule : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId))
+ eval(log.debug("Running scaling rule [kub-cluster] : " + kubernetesClusterId + " [cluster] : " + clusterId))
$loadThresholds : LoadThresholds() from autoscalePolicy.getLoadThresholds()
@@ -79,81 +79,81 @@ dialect "mvel"
scaleUp : Boolean() from (scaleUpForRif || scaleUpForMc || scaleUpForLa)
scaleDown : Boolean() from (scaleDownForRif && scaleDownForMc && scaleDownForLa)
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] minReplicas : " + minReplicas))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] maxReplicas : " + maxReplicas))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [Replicas] nonTerminated : " + nonTerminatedReplicas))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [Replicas] minReplicas : " + minReplicas))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [Replicas] maxReplicas : " + maxReplicas))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] resetted ? : " + rifReset))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] predicted value : " + rifPredictedValue))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] upper limit : " + rifUpperLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] lower limit : " + rifLowerLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [RequestInFlight] resetted ? : " + rifReset))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [RequestInFlight] predicted value : " + rifPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [RequestInFlight] upper limit : " + rifUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [RequestInFlight] lower limit : " + rifLowerLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] resetted ? : " + mcReset))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] predicted value : " + mcPredictedValue))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] upper limit : " + mcUpperLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] lower limit : " + mcLowerLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [MemoryConsumption] resetted ? : " + mcReset))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [MemoryConsumption] predicted value : " + mcPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [MemoryConsumption] upper limit : " + mcUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [MemoryConsumption] lower limit : " + mcLowerLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] resetted ? : " + laReset))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] predicted value : " + laPredictedValue))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] upper limit : " + laUpperLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] lower limit : " + laLowerLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [LoadAverage] resetted ? : " + laReset))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [LoadAverage] predicted value : " + laPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [LoadAverage] upper limit : " + laUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " [LoadAverage] lower limit : " + laLowerLimit))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " Scale-up action : " + scaleUp))
- eval(log.debug("[scaling] " + " [cluster] " + clusterId + " Scale-down action : " + scaleDown))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " scale-up action : " + scaleUp))
+ eval(log.debug("[scaling] " + " [cluster] : " + clusterId + " scale-down action : " + scaleDown))
then
if (scaleUp) {
int requiredReplicas = 0;
if (scaleUpForRif) {
int predictedReplicasForRif = $delegator.getPredictedReplicasForStat(minReplicas, rifUpperLimit, rifPredictedValue);
- log.info("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] predicted replicas : " + predictedReplicasForRif);
+ log.info("[scaling] " + " [cluster] : " + clusterId + " [RequestInFlight] predicted replicas : " + predictedReplicasForRif);
if (predictedReplicasForRif > requiredReplicas ) {
requiredReplicas = predictedReplicasForRif;
}
}
if (scaleUpForMc) {
int predictedReplicasForMc = $delegator.getPredictedReplicasForStat(minReplicas, mcUpperLimit, mcPredictedValue);
- log.info("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] predicted replicas : " + predictedReplicasForMc);
+ log.info("[scaling] " + " [cluster] : " + clusterId + " [MemoryConsumption] predicted replicas : " + predictedReplicasForMc);
if (predictedReplicasForMc > requiredReplicas ) {
requiredReplicas = predictedReplicasForMc;
}
}
if (scaleUpForLa) {
int predictedReplicasForLa = $delegator.getPredictedReplicasForStat(minReplicas, laUpperLimit, laPredictedValue);
- log.info("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] predicted replicas : " + predictedReplicasForLa);
+ log.info("[scaling] " + " [cluster] : " + clusterId + " [LoadAverage] predicted replicas : " + predictedReplicasForLa);
if (predictedReplicasForLa > requiredReplicas ) {
requiredReplicas = predictedReplicasForLa;
}
}
//max-check
if (requiredReplicas > maxReplicas) {
- log.info("[scaling] " + " [cluster] " + clusterId + " predicted replicas > max replicas : ");
+ log.info("[scaling] " + " [cluster] : " + clusterId + " predicted replicas > max replicas : ");
requiredReplicas = maxReplicas;
}
//min-check
if (requiredReplicas < minReplicas) {
- log.info("[scaling] " + " [cluster] " + clusterId + " predicted replicas < min replicas : ");
+ log.info("[scaling] " + " [cluster] : " + clusterId + " predicted replicas < min replicas : ");
requiredReplicas = minReplicas;
}
//expand the cluster
if (requiredReplicas > nonTerminatedReplicas) {
- log.info("[scaling] Decided to scale-up : [cluster] " + clusterId);
- log.info("[scaling-up] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
+ log.info("[scaling] Decided to scale-up : [cluster] : " + clusterId);
+ log.info("[scaling-up] " + " [cluster] : " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
$delegator.delegateUpdateContainers($kubernetesClusterContext, requiredReplicas);
}
//shrink the cluster
if (requiredReplicas < nonTerminatedReplicas) {
- log.info("[scaling] Decided to scale-down : [cluster] " + clusterId);
- log.info("[scaling-down] " + " [cluster] " + clusterId + " valid number of replicas to shrink : " + requiredReplicas);
+ log.info("[scaling] Decided to scale-down : [cluster] : " + clusterId);
+ log.info("[scaling-down] " + " [cluster] : " + clusterId + " valid number of replicas to shrink : " + requiredReplicas);
$delegator.delegateUpdateContainers($kubernetesClusterContext, requiredReplicas);
}
if (requiredReplicas == nonTerminatedReplicas) {
- log.info("[scaling] " + " [cluster] " + clusterId + "non terminated replicas and predicted replicas are same");
+ log.info("[scaling] " + " [cluster] : " + clusterId + "non terminated replicas and predicted replicas are same");
}
} else if (scaleDown) {
- log.info("[scaling] Decided to scale-down : [cluster] " + clusterId);
- log.info("[scaling-down] " + " [cluster] " + clusterId + " shrink the cluster to minReplicas : " + minReplicas);
+ log.info("[scaling] Decided to scale-down [cluster] : " + clusterId);
+ log.info("[scaling-down] " + " [cluster] : " + clusterId + " shrink the cluster to minReplicas : " + minReplicas);
//shrink the cluster to minReplicas
$delegator.delegateUpdateContainers($kubernetesClusterContext, minReplicas);
} else {
[19/50] [abbrv] git commit: Fixing a minor sonar issue - using
all-caps for static final variables.
Posted by ni...@apache.org.
Fixing a minor sonar issue - using all-caps for static final variables.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f5c34c0e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f5c34c0e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f5c34c0e
Branch: refs/heads/master
Commit: f5c34c0eb9cc878b035030fe5576a7354a4ea0c7
Parents: a7c0134
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Thu Oct 9 18:55:46 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../controller/axiom/AxiomXpathParserUtil.java | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/f5c34c0e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/AxiomXpathParserUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/AxiomXpathParserUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/AxiomXpathParserUtil.java
index f10e4cc..62eec5f 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/AxiomXpathParserUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/AxiomXpathParserUtil.java
@@ -56,7 +56,9 @@ import java.util.*;
*/
public class AxiomXpathParserUtil {
- private static final Log log = LogFactory.getLog(AxiomXpathParserUtil.class);
+ private static final Log LOG = LogFactory.getLog(AxiomXpathParserUtil.class);
+
+ private AxiomXpathParserUtil(){}
public static OMElement parse(File xmlSource) throws MalformedConfigurationFileException,
IllegalArgumentException {
@@ -65,7 +67,7 @@ public class AxiomXpathParserUtil {
if (xmlSource == null) {
String msg = "File is null.";
- log.error(msg);
+ LOG.error(msg);
throw new IllegalArgumentException(msg);
}
@@ -75,11 +77,11 @@ public class AxiomXpathParserUtil {
} catch (XMLStreamException e) {
String msg = "Failed to parse the configuration file : " + xmlSource.getPath();
- log.error(msg, e);
+ LOG.error(msg, e);
throw new MalformedConfigurationFileException(msg, e);
} catch (FileNotFoundException e) {
String msg = "Configuration file cannot be found : " + xmlSource.getPath();
- log.error(msg);
+ LOG.error(msg);
throw new MalformedConfigurationFileException(msg);
}
@@ -134,13 +136,13 @@ public class AxiomXpathParserUtil {
private static void neglectingWarn(final String fileName, final String elt, final int size) {
if (size > 1) {
- log.warn(fileName + " contains more than one " + elt + " elements!" +
+ LOG.warn(fileName + " contains more than one " + elt + " elements!" +
" Elements other than the first will be neglected.");
}
}
public static void plainTextWarn(final String elt) {
- log.warn("Unable to find a value for " + elt + " element from Secure Vault." +
+ LOG.warn("Unable to find a value for " + elt + " element from Secure Vault." +
"Hence we will try to assign the plain text value (if specified).");
}
@@ -162,7 +164,7 @@ public class AxiomXpathParserUtil {
return nodeList.isEmpty() ? null : nodeList.get(0);
} catch (JaxenException e) {
String msg = "Error occurred while reading the Xpath (" + xpath + ")";
- log.error(msg, e);
+ LOG.error(msg, e);
throw new MalformedConfigurationFileException(msg, e);
}
@@ -184,7 +186,7 @@ public class AxiomXpathParserUtil {
return nodeList;
} catch (JaxenException e) {
String msg = "Error occurred while reading the Xpath (" + xpath + ")";
- log.error(msg, e);
+ LOG.error(msg, e);
throw new MalformedConfigurationFileException(msg, e);
}
@@ -208,7 +210,7 @@ public class AxiomXpathParserUtil {
return nodeList;
} catch (JaxenException e) {
String msg = "Error occurred while reading the Xpath (" + xpath + ")";
- log.error(msg, e);
+ LOG.error(msg, e);
throw new MalformedConfigurationFileException(msg, e);
}
[44/50] [abbrv] git commit: Handling NPE in docker case.
Posted by ni...@apache.org.
Handling NPE in docker case.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/848f23c0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/848f23c0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/848f23c0
Branch: refs/heads/master
Commit: 848f23c0d66f05f23699ddfb02c51434b5bbc29b
Parents: d7fc233
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 20:30:21 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/impl/CloudControllerServiceImpl.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/848f23c0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 25e19ce..5acb86c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -866,14 +866,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
private void logTermination(MemberContext memberContext) {
+ if (memberContext == null) {
+ return;
+ }
+
+ String partitionId = memberContext.getPartition() == null ? null : memberContext.getPartition().getId();
+
//updating the topology
TopologyBuilder.handleMemberTerminated(memberContext.getCartridgeType(),
memberContext.getClusterId(), memberContext.getNetworkPartitionId(),
- memberContext.getPartition().getId(), memberContext.getMemberId());
+ partitionId, memberContext.getMemberId());
//publishing data
CartridgeInstanceDataPublisher.publish(memberContext.getMemberId(),
- memberContext.getPartition().getId(),
+ partitionId,
memberContext.getNetworkPartitionId(),
memberContext.getClusterId(),
memberContext.getCartridgeType(),
[21/50] [abbrv] git commit: adding container drool files
Posted by ni...@apache.org.
adding container drool files
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/36c40b00
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/36c40b00
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/36c40b00
Branch: refs/heads/master
Commit: 36c40b0055eb4287aa55e4d5e027fbf06a35a45c
Parents: 742a08d
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:50:08 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../modules/distribution/src/assembly/bin.xml | 16 +-
.../src/main/conf/container-mincheck.drl | 48 ++++++
.../src/main/conf/container-scaling.drl | 148 +++++++++++++++++++
3 files changed, 211 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/36c40b00/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml b/products/stratos/modules/distribution/src/assembly/bin.xml
index a318f5c..4295576 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -660,7 +660,7 @@
<filtered>true</filtered>
<fileMode>755</fileMode>
</file>
- <file>
+ <file>
<source>src/main/conf/mincheck.drl</source>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/conf</outputDirectory>
<filtered>true</filtered>
@@ -678,6 +678,20 @@
<filtered>true</filtered>
<fileMode>755</fileMode>
</file>
+ <!-- container-drools files -->
+ <file>
+ <source>src/main/conf/container-mincheck.drl</source>
+ <outputDirectory>${pom.artifactId}-${pom.version}/repository/conf</outputDirectory>
+ <filtered>true</filtered>
+ <fileMode>755</fileMode>
+ </file>
+ <file>
+ <source>src/main/conf/container-scaling.drl</source>
+ <outputDirectory>${pom.artifactId}-${pom.version}/repository/conf</outputDirectory>
+ <filtered>true</filtered>
+ <fileMode>755</fileMode>
+ </file>
+ <!-- container-drools files -->
<!-- autoscaler -->
<file>
<source>${project.basedir}/INSTALL.txt</source>
http://git-wip-us.apache.org/repos/asf/stratos/blob/36c40b00/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
new file mode 100644
index 0000000..edea3cf
--- /dev/null
+++ b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.autoscaler.rule;
+
+import org.apache.commons.logging.Log;
+import org.apache.stratos.autoscaler.KubernetesClusterContext;
+
+global org.apache.stratos.autoscaler.rule.RuleLog log;
+global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator;
+global java.lang.String clusterId;
+
+rule "Minimum Rule"
+dialect "mvel"
+ when
+ $kubernetesClusterContext : KubernetesClusterContext ()
+ kubernetesClusterId : String() from $kubernetesClusterContext.getKubernetesClusterID()
+ minReplicas : Integer() from $kubernetesClusterContext.getMinReplicas()
+ nonTerminatedReplicas : Integer() from $kubernetesClusterContext.getNonTerminatedMemberCount()
+
+ eval(log.debug("Running minimum rule: [kub-cluster] " +kubernetesClusterId + " [cluster] " + clusterId))
+ eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId
+ + " [cluster] " + clusterId + " Non terminated member count: " + nonTerminatedReplicas))
+ eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId
+ + " [cluster] " + clusterId + " Minimum member count: " + minReplicas))
+ eval (nonTerminatedReplicas < minReplicas)
+ then
+ log.info("[min-check] [kub-cluster] " + kubernetesClusterId
+ + " [cluster] " + clusterId + " : min-rule not satisfied, creating more containers")
+ $delegator.delegateExpandCluster($kubernetesClusterContext.getClusterId(), minReplicas);
+end
+
http://git-wip-us.apache.org/repos/asf/stratos/blob/36c40b00/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
new file mode 100644
index 0000000..c773264
--- /dev/null
+++ b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.autoscaler.rule;
+
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.LoadThresholds;
+import org.apache.stratos.autoscaler.KubernetesClusterContext;
+
+global org.apache.stratos.autoscaler.rule.RuleLog log;
+global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator;
+global org.apache.stratos.autoscaler.policy.model.AutoscalePolicy autoscalePolicy;
+global java.lang.String clusterId;
+global java.lang.Boolean rifReset;
+global java.lang.Boolean mcReset;
+global java.lang.Boolean laReset;
+
+rule "Scaling Rule"
+dialect "mvel"
+ when
+ $kubernetesClusterContext : KubernetesClusterContext ()
+ kubernetesClusterId : String() from $kubernetesClusterContext.getKubernetesClusterID()
+ minReplicas : Integer() from $kubernetesClusterContext.getMinReplicas()
+ maxReplicas : Integer() from $kubernetesClusterContext.getMaxReplicas()
+
+ eval(log.debug("Running scaling rule : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId))
+
+ $loadThresholds : LoadThresholds() from autoscalePolicy.getLoadThresholds()
+
+ rifUpperLimit : Float() from $loadThresholds.getRequestsInFlight().getUpperLimit()
+ rifLowerLimit : Float() from $loadThresholds.getRequestsInFlight().getLowerLimit()
+
+ rifAverage : Float() from $kubernetesClusterContext.getAverageRequestsInFlight()
+ rifGradient : Float() from $kubernetesClusterContext.getRequestsInFlightGradient()
+ rifSecondDerivative : Float() from $kubernetesClusterContext.getRequestsInFlightSecondDerivative()
+ rifPredictedValue : Double() from $delegator.getPredictedValueForNextMinute(rifAverage, rifGradient, rifSecondDerivative, 1)
+
+ mcUpperLimit : Float() from $loadThresholds.getMemoryConsumption().getUpperLimit()
+ mcLowerLimit : Float() from $loadThresholds.getMemoryConsumption().getLowerLimit()
+
+ memoryConsumptionAverage : Float() from $kubernetesClusterContext.getAverageMemoryConsumption()
+ memoryConsumptionGradient : Float() from $kubernetesClusterContext.getMemoryConsumptionGradient()
+ memoryConsumptionSecondDerivative : Float() from $kubernetesClusterContext.getMemoryConsumptionSecondDerivative()
+ mcPredictedValue : Double() from $delegator.getPredictedValueForNextMinute(memoryConsumptionAverage, memoryConsumptionGradient, memoryConsumptionSecondDerivative, 1)
+
+ laUpperLimit : Float() from $loadThresholds.getLoadAverage().getUpperLimit()
+ laLowerLimit : Float() from $loadThresholds.getLoadAverage().getLowerLimit()
+
+ loadAverageAverage : Float() from $kubernetesClusterContext.getAverageLoadAverage()
+ loadAverageGradient : Float() from $kubernetesClusterContext.getLoadAverageGradient()
+ loadAverageSecondDerivative : Float() from $kubernetesClusterContext.getLoadAverageSecondDerivative()
+ laPredictedValue : Double() from $delegator.getPredictedValueForNextMinute(loadAverageAverage, loadAverageGradient, loadAverageSecondDerivative, 1)
+
+ scaleUpForRif : Boolean() from (rifReset && (rifPredictedValue > rifUpperLimit))
+ scaleUpForMc : Boolean() from (mcReset && (mcPredictedValue > mcUpperLimit))
+ scaleUpForLa : Boolean() from (laReset && (laPredictedValue > laUpperLimit))
+
+ scaleDownForRif : Boolean() from (rifReset && (rifPredictedValue < rifLowerLimit))
+ scaleDownForMc : Boolean() from (mcReset && (mcPredictedValue < mcLowerLimit))
+ scaleDownForLa : Boolean() from (laReset && (laPredictedValue < laLowerLimit))
+
+ scaleUp : Boolean() from (scaleUpForRif || scaleUpForMc || scaleUpForLa)
+ scaleDown : Boolean() from (scaleDownForRif && scaleDownForMc && scaleDownForLa)
+
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] minReplicas : " + minReplicas))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [Replicas] maxReplicas : " + maxReplicas))
+
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] resetted ? : " + rifReset))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] predicted value : " + rifPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] upper limit : " + rifUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] lower limit : " + rifLowerLimit))
+
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] resetted ? : " + mcReset))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] predicted value : " + mcPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] upper limit : " + mcUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] lower limit : " + mcLowerLimit))
+
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] resetted ? : " + laReset))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] predicted value : " + laPredictedValue))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] upper limit : " + laUpperLimit))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] lower limit : " + laLowerLimit))
+
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " Scale-up action : " + scaleUp))
+ eval(log.debug("[scaling] " + " [cluster] " + clusterId + " Scale-down action : " + scaleDown))
+
+ then
+ if (scaleUp) {
+ log.info("[scale-up] Decided to scale up : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId);
+ int requiredReplicas = 0;
+ if (scaleUpForRif) {
+ int predictedReplicasForRif = $delegator.getPredictedReplicasForStat(minReplicas, rifUpperLimit, rifPredictedValue);
+ log.info("[scaling] " + " [cluster] " + clusterId + " [RequestInFlight] predicted replicas : " + predictedReplicasForRif);
+ if (predictedReplicasForRif > requiredReplicas ) {
+ requiredReplicas = predictedReplicasForRif;
+ }
+ }
+ if (scaleUpForMc) {
+ int predictedReplicasForMc = $delegator.getPredictedReplicasForStat(minReplicas, mcUpperLimit, mcPredictedValue);
+ log.info("[scaling] " + " [cluster] " + clusterId + " [MemoryConsumption] predicted replicas : " + predictedReplicasForMc);
+ if (predictedReplicasForMc > requiredReplicas ) {
+ requiredReplicas = predictedReplicasForMc;
+ }
+ }
+ if (scaleUpForLa) {
+ int predictedReplicasForLa = $delegator.getPredictedReplicasForStat(minReplicas, laUpperLimit, laPredictedValue);
+ log.info("[scaling] " + " [cluster] " + clusterId + " [LoadAverage] predicted replicas : " + predictedReplicasForLa);
+ if (predictedReplicasForLa > requiredReplicas ) {
+ requiredReplicas = predictedReplicasForLa;
+ }
+ }
+ //max-check
+ if (requiredReplicas > maxReplicas) {
+ log.info("[scaling] " + " [cluster] " + clusterId + " predicted replicas > max replicas : ");
+ requiredReplicas = maxReplicas;
+ }
+ //min-check
+ if (requiredReplicas < minReplicas) {
+ log.info("[scaling] " + " [cluster] " + clusterId + " predicted replicas < min replicas : ");
+ requiredReplicas = minReplicas;
+ }
+ //expand the cluster
+ log.info("[scaling] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas);
+ $delegator.delegateExpandCluster(clusterId, requiredReplicas);
+ } else if (scaleDown) {
+ log.debug("[scale-down] Decided to scale down : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId);
+ //shrink the cluster to minReplicas
+ $delegator.delegateExpandCluster(clusterId, minReplicas);
+ } else {
+ log.debug("[scaling] No decision made to either scale up or down ... ");
+ }
+end
+
[30/50] [abbrv] git commit: Implementing updateContainers method and
fixing a minor sonar issue (removing redundant public modifier )
Posted by ni...@apache.org.
Implementing updateContainers method and fixing a minor sonar issue (removing redundant public modifier )
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/63d5cecf
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/63d5cecf
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/63d5cecf
Branch: refs/heads/master
Commit: 63d5cecff4690452c07cf3bbf60cd312bb6b48e1
Parents: afb9daa
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Thu Oct 9 19:01:17 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 135 ++++++++++++++++++-
.../interfaces/CloudControllerService.java | 33 ++---
2 files changed, 146 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/63d5cecf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index da96ab0..a3fed80 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1408,8 +1408,9 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.createService(service);
- // set host port
+ // set host port and update
ctxt.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, service.getPort());
+ dataHolder.addClusterContext(ctxt);
if (log.isDebugEnabled()) {
log.debug("Cloud Controller successfully started the service "
@@ -1426,7 +1427,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
for (int i = 0; i < expectedCount ; i++) {
newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
- log.info("Pods "+newlyCreatedPods.length);
+ if (log.isDebugEnabled()) {
+
+ log.debug("Pods Count: "+newlyCreatedPods.length+" for cluster: "+clusterId);
+ }
if(newlyCreatedPods.length == expectedCount) {
break;
}
@@ -1456,7 +1460,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// trigger topology
// update the topology with the newly spawned member
TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
- kubernetesMasterIp, kubernetesMasterIp, context);
+ pod.getCurrentState().getPodIP(), pod.getCurrentState().getHostIP(), context);
// publish data
// TODO
// CartridgeInstanceDataPublisher.publish(context.getMemberId(), null, null, context.getClusterId(), cartridgeType, MemberStatus.Created.toString(), node);
@@ -1626,10 +1630,129 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
@Override
- public void updateKubernetesController(String clusterId, int replicas)
- throws InvalidClusterException {
- // TODO Auto-generated method stub
+ public MemberContext[] updateContainers(String clusterId, int replicas)
+ throws UnregisteredCartridgeException {
+ if(log.isDebugEnabled()) {
+ log.debug("CloudControllerServiceImpl:updateContainers for cluster : "+clusterId);
+ }
+
+ ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
+
+ if (ctxt == null) {
+ String msg = "Instance start-up failed. Invalid cluster id. " + clusterId;
+ log.error(msg);
+ throw new IllegalArgumentException(msg);
+ }
+
+ String cartridgeType = ctxt.getCartridgeType();
+
+ Cartridge cartridge = dataHolder.getCartridge(cartridgeType);
+
+ if (cartridge == null) {
+ String msg =
+ "Instance start-up failed. No matching Cartridge found [type] "+cartridgeType
+ +". [cluster id] "+ clusterId;
+ log.error(msg);
+ throw new UnregisteredCartridgeException(msg);
+ }
+
+ try {
+ String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
+
+ KubernetesClusterContext kubClusterContext = dataHolder.getKubernetesClusterContext(kubernetesClusterId);
+
+ if (kubClusterContext == null) {
+ String msg =
+ "Instance start-up failed. No matching Kubernetes Context Found for [id] "+kubernetesClusterId
+ +". [cluster id] "+ clusterId;
+ log.error(msg);
+ throw new UnregisteredCartridgeException(msg);
+ }
+
+ KubernetesApiClient kubApi = kubClusterContext.getKubApi();
+
+ // update the replication controller - cluster id = replication controller id
+ if (log.isDebugEnabled()) {
+ log.debug("Cloud Controller is delegating request to update a replication controller "+clusterId+
+ " to Kubernetes layer.");
+ }
+
+ kubApi.updateReplicationController(clusterId, replicas);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Cloud Controller successfully updated the controller "
+ + clusterId + " via Kubernetes layer.");
+ }
+
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+ // execute the label query
+ Pod[] allPods = new Pod[0];
+
+ // wait replicas*5s time in the worst case ; best case = 0s
+ for (int i = 0; i < replicas ; i++) {
+ allPods = kubApi.getSelectedPods(new Label[]{l});
+
+ if (log.isDebugEnabled()) {
+
+ log.debug("Pods Count: "+allPods.length+" for cluster: "+clusterId);
+ }
+ if(allPods.length == replicas) {
+ break;
+ }
+ Thread.sleep(5000);
+ }
+
+ if (log.isDebugEnabled()) {
+
+ log.debug(String.format("Pods created : %s for cluster : %s",allPods.length, clusterId));
+ }
+
+ List<MemberContext> memberContexts = new ArrayList<MemberContext>();
+
+ PodToMemberContext podToMemberContextFunc = new PodToMemberContext();
+ // generate Member Contexts
+ for (Pod pod : allPods) {
+ MemberContext context;
+ if ((context = dataHolder.getMemberContextOfMemberId(pod.getId())) == null) {
+
+ context = podToMemberContextFunc.apply(pod);
+ context.setCartridgeType(cartridgeType);
+ context.setClusterId(clusterId);
+
+ context.setProperties(CloudControllerUtil.addProperty(context
+ .getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
+ ctxt.getProperties().getProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
+
+ dataHolder.addMemberContext(context);
+
+ // trigger topology
+ // update the topology with the newly spawned member
+ TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
+ pod.getCurrentState().getPodIP(), pod.getCurrentState().getHostIP(), context);
+
+ memberContexts.add(context);
+ }
+ // publish data
+ // TODO
+// CartridgeInstanceDataPublisher.publish(context.getMemberId(), null, null, context.getClusterId(), cartridgeType, MemberStatus.Created.toString(), node);
+
+ }
+
+ // persist in registry
+ persist();
+
+ log.info("Kubernetes entities are successfully starting up. "+memberContexts);
+
+ return memberContexts.toArray(new MemberContext[0]);
+
+ } catch (Exception e) {
+ String msg = "Failed to update containers belong to cluster " + clusterId+". Cause: "+e.getMessage();
+ log.error(msg, e);
+ throw new IllegalStateException(msg, e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/63d5cecf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index 5725a2a..7117c1c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -43,7 +43,7 @@ public interface CloudControllerService {
* @throws InvalidIaasProviderException if the iaas providers configured are not valid.
* @throws IllegalArgumentException if the provided argument is not valid.
*/
- public void deployCartridgeDefinition(CartridgeConfig cartridgeConfig)
+ void deployCartridgeDefinition(CartridgeConfig cartridgeConfig)
throws InvalidCartridgeDefinitionException, InvalidIaasProviderException;
/**
@@ -51,7 +51,7 @@ public interface CloudControllerService {
* @param cartridgeType type of the cartridge to be undeployed.
* @throws InvalidCartridgeTypeException if the cartridge type specified is not a deployed cartridge.
*/
- public void undeployCartridgeDefinition(String cartridgeType) throws InvalidCartridgeTypeException;
+ void undeployCartridgeDefinition(String cartridgeType) throws InvalidCartridgeTypeException;
/**
* Validate a given {@link Partition} for basic property existence.
@@ -59,7 +59,7 @@ public interface CloudControllerService {
* @return whether the partition is a valid one.
* @throws InvalidPartitionException if the partition is invalid.
*/
- public boolean validatePartition(Partition partition) throws InvalidPartitionException;
+ boolean validatePartition(Partition partition) throws InvalidPartitionException;
/**
* Validate a given {@link DeploymentPolicy} against a Cartridge.
@@ -69,7 +69,7 @@ public interface CloudControllerService {
* @throws InvalidPartitionException if the policy contains at least one invalid partition.
* @throws InvalidCartridgeTypeException if the given Cartridge type is not a valid one.
*/
- public boolean validateDeploymentPolicy(String cartridgeType, Partition[] partitions)
+ boolean validateDeploymentPolicy(String cartridgeType, Partition[] partitions)
throws InvalidPartitionException, InvalidCartridgeTypeException;
/**
@@ -85,7 +85,7 @@ public interface CloudControllerService {
* when the cartridge type requested by this service is
* not a registered one.
*/
- public boolean registerService(Registrant registrant) throws UnregisteredCartridgeException;
+ boolean registerService(Registrant registrant) throws UnregisteredCartridgeException;
/**
* Calling this method will result in an instance startup, which is belong
@@ -97,7 +97,7 @@ public interface CloudControllerService {
* @throws UnregisteredCartridgeException if the requested Cartridge type is not a registered one.
* @throws InvalidIaasProviderException if the iaas requested is not valid.
*/
- public MemberContext startInstance(MemberContext member) throws UnregisteredCartridgeException, InvalidIaasProviderException;
+ MemberContext startInstance(MemberContext member) throws UnregisteredCartridgeException, InvalidIaasProviderException;
/**
* Create a container cluster.
@@ -105,7 +105,7 @@ public interface CloudControllerService {
* @return a list of {@link MemberContext}s correspond to each Pod created.
* @throws UnregisteredCartridgeException if the requested Cartridge type is not a registered one.
*/
- public MemberContext[] startContainers(ContainerClusterContext clusterContext) throws UnregisteredCartridgeException;
+ MemberContext[] startContainers(ContainerClusterContext clusterContext) throws UnregisteredCartridgeException;
/**
* Calling this method will result in termination of the instance with given member id in the given Partition.
@@ -117,7 +117,7 @@ public interface CloudControllerService {
* an instance need to be terminated..
* @return whether an instance terminated successfully or not.
*/
- public void terminateInstance(String memberId) throws InvalidMemberException, InvalidCartridgeTypeException;
+ void terminateInstance(String memberId) throws InvalidMemberException, InvalidCartridgeTypeException;
/**
* Calling this method will result in termination of all instances belong
@@ -127,36 +127,37 @@ public interface CloudControllerService {
* cluster ID of the instance to be terminated.
* @return whether an instance terminated successfully or not.
*/
- public void terminateAllInstances(String clusterId) throws InvalidClusterException;
+ void terminateAllInstances(String clusterId) throws InvalidClusterException;
/**
* Terminate all containers of the given cluster.
* @param clusterId id of the subjected cluster.
* @throws InvalidClusterException
*/
- public void terminateAllContainers(String clusterId) throws InvalidClusterException;
+ void terminateAllContainers(String clusterId) throws InvalidClusterException;
/**
* Update the Kubernetes controller created for the given cluster with the specified number of replicas.
* @param clusterId id of the subjected cluster.
* @param replicas total number of replicas to be set to the controller.
+ * @return newly created Members if any.
* @throws InvalidClusterException
*/
- public void updateKubernetesController(String clusterId, int replicas) throws InvalidClusterException;
+ MemberContext[] updateContainers(String clusterId, int replicas) throws UnregisteredCartridgeException;
/**
* Unregister a docker service identified by the given cluster id.
* @param clusterId service cluster id.
* @throws UnregisteredClusterException if the service cluster requested is not a registered one.
*/
- public void unregisterDockerService(String clusterId) throws UnregisteredClusterException;
+ void unregisterDockerService(String clusterId) throws UnregisteredClusterException;
/**
* Unregister the service cluster identified by the given cluster id.
* @param clusterId service cluster id.
* @throws UnregisteredClusterException if the service cluster requested is not a registered one.
*/
- public void unregisterService(String clusterId) throws UnregisteredClusterException;
+ void unregisterService(String clusterId) throws UnregisteredClusterException;
/**
* This method will return the information regarding the given cartridge, if present.
@@ -167,7 +168,7 @@ public interface CloudControllerService {
* @return {@link org.apache.stratos.cloud.controller.pojo.CartridgeInfo} of the given cartridge type or <code>null</code>.
* @throws UnregisteredCartridgeException if there is no registered cartridge with this type.
*/
- public CartridgeInfo getCartridgeInfo(String cartridgeType) throws UnregisteredCartridgeException;
+ CartridgeInfo getCartridgeInfo(String cartridgeType) throws UnregisteredCartridgeException;
/**
* Calling this method will result in returning the types of {@link org.apache.stratos.cloud.controller.pojo.Cartridge}s
@@ -175,7 +176,7 @@ public interface CloudControllerService {
*
* @return String array containing types of registered {@link org.apache.stratos.cloud.controller.pojo.Cartridge}s.
*/
- public String[] getRegisteredCartridges();
+ String[] getRegisteredCartridges();
/**
* Returns the {@link org.apache.stratos.cloud.controller.pojo.ClusterContext} object associated with the given cluster id, or null if not found
@@ -183,6 +184,6 @@ public interface CloudControllerService {
* @param clusterId cluster id
* @return {@link org.apache.stratos.cloud.controller.pojo.ClusterContext} object associated with the given cluster id, or null
*/
- public ClusterContext getClusterContext (String clusterId);
+ ClusterContext getClusterContext (String clusterId);
}
[26/50] [abbrv] git commit: avoid catching throwable
Posted by ni...@apache.org.
avoid catching throwable
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9e25fcd8
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9e25fcd8
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9e25fcd8
Branch: refs/heads/master
Commit: 9e25fcd80ffcb016103bf3c6ee488ae20dc47237
Parents: 4aa518d
Author: R-Rajkumar <rr...@gmail.com>
Authored: Fri Oct 10 16:45:00 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../stratos/autoscaler/rule/RuleTasksDelegator.java | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9e25fcd8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 0a9bde3..1154ac3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -32,6 +32,8 @@ import org.apache.stratos.autoscaler.algorithm.OneAfterAnother;
import org.apache.stratos.autoscaler.algorithm.RoundRobin;
import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.client.cloud.controller.InstanceNotificationClient;
+import org.apache.stratos.autoscaler.exception.SpawningException;
+import org.apache.stratos.autoscaler.exception.TerminationException;
import org.apache.stratos.autoscaler.partition.PartitionManager;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
@@ -227,7 +229,7 @@ public class RuleTasksDelegator {
log.debug("Returned member context is null, did not add to pending members");
}
}
- } catch (Throwable e) {
+ } catch (Exception e) {
log.error("Cannot create containers ", e);
}
}
@@ -260,7 +262,7 @@ public class RuleTasksDelegator {
log.debug("Returned array of member context is null, did not add to pending members");
}
}
- } catch (Throwable e) {
+ } catch (Exception e) {
log.error("Cannot update kubernetes controller ", e);
}
}
@@ -269,9 +271,9 @@ public class RuleTasksDelegator {
try {
CloudControllerClient ccClient = CloudControllerClient.getInstance();
ccClient.terminateContainer(memberId);
- } catch (Throwable e) {
+ } catch (TerminationException e) {
log.error("Cannot delete container ", e);
- }
+ }
}
public int getPredictedReplicasForStat(int minReplicas, float statUpperLimit, float statPredictedValue) {
[14/50] [abbrv] git commit: adding getter/setters for stats in
MemberStatsContext
Posted by ni...@apache.org.
adding getter/setters for stats in MemberStatsContext
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/13450de8
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/13450de8
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/13450de8
Branch: refs/heads/master
Commit: 13450de8d219d67cd07176d7a3b29d5019c87780
Parents: 7b0cf72
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:56:24 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../stratos/autoscaler/MemberStatsContext.java | 23 ++++++++++++++++++++
1 file changed, 23 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/13450de8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java
index bd3a6c3..84e8854 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java
@@ -77,4 +77,27 @@ public class MemberStatsContext {
memoryConsumption.setSecondDerivative(value);
}
+ public float getAverageLoadAverage() {
+ return loadAverage.getAverage();
+ }
+
+ public float getAverageMemoryConsumption() {
+ return memoryConsumption.getAverage();
+ }
+
+ public float getGradientOfLoadAverage() {
+ return loadAverage.getGradient();
+ }
+
+ public float getGradientOfMemoryConsumption() {
+ return memoryConsumption.getGradient();
+ }
+
+ public float getSecondDerivativeOfLoadAverage() {
+ return loadAverage.getSecondDerivative();
+ }
+
+ public float getSecondDerivativeOfMemoryConsumption() {
+ return memoryConsumption.getSecondDerivative();
+ }
}
[49/50] [abbrv] git commit: Adding member context,
soon after starting containers.
Posted by ni...@apache.org.
Adding member context, soon after starting containers.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/530a1665
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/530a1665
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/530a1665
Branch: refs/heads/master
Commit: 530a166577b9c7304c02cbb0bb192aae714f0216
Parents: 9b7ec1f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 09:13:24 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:59 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/impl/CloudControllerServiceImpl.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/530a1665/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 6717f74..5461bc2 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1457,6 +1457,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
.getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
String.valueOf(service.getPort())));
+ dataHolder.addMemberContext(context);
+
// wait till Pod status turns to running and send member spawned.
ScheduledThreadExecutor exec = ScheduledThreadExecutor.getInstance();
if (LOG.isDebugEnabled()) {
[27/50] [abbrv] git commit: PodActivationWatcher is responsible for
checking Pod's state and setting IPs and sending member spawned event.
Posted by ni...@apache.org.
PodActivationWatcher is responsible for checking Pod's state and setting IPs and sending member spawned event.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/652d3984
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/652d3984
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/652d3984
Branch: refs/heads/master
Commit: 652d3984ee9e1924eb9bacb925010db1e1955b8a
Parents: 6679d06
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 19:44:39 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../controller/util/PodActivationWatcher.java | 74 ++++++++++++++++++++
1 file changed, 74 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/652d3984/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
new file mode 100644
index 0000000..13d1ac6
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.util;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.registry.RegistryManager;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
+import org.apache.stratos.kubernetes.client.KubernetesApiClient;
+import org.apache.stratos.kubernetes.client.model.Pod;
+
+/**
+ * Checks whether a container is active and update the {@link FasterLookUpDataHolder}.
+ */
+public class PodActivationWatcher implements Runnable {
+
+ private static final Log LOG = LogFactory
+ .getLog(PodActivationWatcher.class);
+ private String podId;
+ private MemberContext ctxt;
+ private KubernetesApiClient kubApi;
+
+ public PodActivationWatcher(String podId, MemberContext ctxt, KubernetesApiClient kubApi) {
+ this.podId = podId;
+ this.ctxt = ctxt;
+ this.kubApi = kubApi;
+ }
+
+ @Override
+ public void run() {
+ try {
+ Pod pod = kubApi.getPod(podId);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("PodActivationWatcher running : "+pod.getCurrentState().getStatus());
+ }
+ if ("Running".equals(pod.getCurrentState().getStatus())) {
+ String hostIP = pod.getCurrentState().getHost();
+ ctxt.setPublicIpAddress(hostIP);
+ ctxt.setPrivateIpAddress(hostIP);
+ FasterLookUpDataHolder.getInstance().addMemberContext(ctxt);
+ // trigger topology
+ TopologyBuilder.handleMemberSpawned(ctxt.getCartridgeType(), ctxt.getClusterId(),
+ null, hostIP, hostIP, ctxt);
+
+ RegistryManager.getInstance().persist(FasterLookUpDataHolder.getInstance());
+
+ }
+
+ } catch (Exception e) {
+ LOG.error("Container Activation Watcher Failed.. ", e);
+ }
+
+ }
+
+}
[36/50] [abbrv] git commit: Changes to the WSDL with new
terminateContainer API.
Posted by ni...@apache.org.
Changes to the WSDL with new terminateContainer API.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7c072a9d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7c072a9d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7c072a9d
Branch: refs/heads/master
Commit: 7c072a9d19f13bc1774aaf28c8e5550b2949e047
Parents: 6e0efc0
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 09:49:14 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:57 2014 +0530
----------------------------------------------------------------------
.../main/resources/CloudControllerService.wsdl | 903 ++++++++++---------
1 file changed, 478 insertions(+), 425 deletions(-)
----------------------------------------------------------------------
[35/50] [abbrv] Changes to the WSDL with new terminateContainer API.
Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/stratos/blob/7c072a9d/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
----------------------------------------------------------------------
diff --git a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
index eb8c819..26ecead 100644
--- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
+++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
@@ -3,1196 +3,1249 @@
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://util.java/xsd">
<xs:complexType name="Properties">
- <xs:sequence/>
+ <xs:sequence></xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://exception.controller.cloud.stratos.apache.org/xsd">
<xs:complexType name="InvalidPartitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeTypeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UnregisteredCartridgeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UnregisteredClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidMemberException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="MemberTerminationFailedException">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidIaasProviderException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeDefinitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:ax221="http://exception.controller.cloud.stratos.apache.org/xsd" xmlns:ax227="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:ax225="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
- <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
<xs:element name="CloudControllerServiceInvalidPartitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax220:InvalidPartitionException"/>
+ <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax220:InvalidPartitionException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"/>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartitionResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeTypeException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax220:InvalidCartridgeTypeException"/>
+ <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax220:InvalidCartridgeTypeException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicy">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax222:Partition"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax222:Partition"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicyResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceUnregisteredCartridgeException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax220:UnregisteredCartridgeException"/>
+ <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax220:UnregisteredCartridgeException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="updateContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="replicas" type="xs:int"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="replicas" type="xs:int"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="updateContainersResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceUnregisteredClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax220:UnregisteredClusterException"/>
+ <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax220:UnregisteredClusterException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterDockerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="undeployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidMemberException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax220:InvalidMemberException"/>
+ <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax220:InvalidMemberException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CloudControllerServiceMemberTerminationFailedException">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="MemberTerminationFailedException" nillable="true" type="ax220:MemberTerminationFailedException"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="terminateContainer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax220:InvalidClusterException"/>
+ <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax220:InvalidClusterException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateAllInstances">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateAllContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidIaasProviderException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax220:InvalidIaasProviderException"/>
+ <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax220:InvalidIaasProviderException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax223:MemberContext"/>
+ <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstanceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="containerClusterContext" nillable="true" type="ax223:ContainerClusterContext"/>
+ <xs:element minOccurs="0" name="containerClusterContext" nillable="true" type="ax223:ContainerClusterContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainersResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="registrant" nillable="true" type="ax223:Registrant"/>
+ <xs:element minOccurs="0" name="registrant" nillable="true" type="ax223:Registrant"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerServiceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridges">
<xs:complexType>
- <xs:sequence/>
+ <xs:sequence></xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridgesResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContext">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContextResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:ClusterContext"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:ClusterContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfo">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfoResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax223:CartridgeInfo"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:CartridgeInfo"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeDefinitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax220:InvalidCartridgeDefinitionException"/>
+ <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax220:InvalidCartridgeDefinitionException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax223:CartridgeConfig"/>
+ <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax223:CartridgeConfig"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema xmlns:ax229="http://util.java/xsd" xmlns:ax226="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://pojo.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://util.java/xsd"/>
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://util.java/xsd"></xs:import>
<xs:complexType name="Properties">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Property">
<xs:sequence>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MemberContext">
<xs:sequence>
- <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="initTime" type="xs:long"/>
- <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"/>
- <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="initTime" type="xs:long"></xs:element>
+ <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
+ <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ContainerClusterContext">
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Registrant">
<xs:sequence>
- <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Persistence">
<xs:sequence>
- <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"/>
+ <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Volume">
<xs:sequence>
- <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"/>
- <xs:element minOccurs="0" name="size" type="xs:int"/>
- <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="size" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClusterContext">
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax229:Properties"/>
- <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"/>
- <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax229:Properties"></xs:element>
+ <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"></xs:element>
+ <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeInfo">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax223:AppType"/>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"/>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax223:AppType"></xs:element>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AppType">
<xs:sequence>
- <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"/>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoadbalancerConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PortMapping">
<xs:sequence>
- <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="container" nillable="true" type="ax223:Container"/>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax223:IaasConfig"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"/>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="container" nillable="true" type="ax223:Container"></xs:element>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax223:IaasConfig"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Container">
<xs:sequence>
- <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IaasConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"/>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterfaces"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterfaces"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterfaces">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterface"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterface"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterface">
<xs:sequence>
- <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:ax224="http://pojo.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
<xs:complexType name="Partition">
<xs:sequence>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="partitionMax" type="xs:int"/>
- <xs:element minOccurs="0" name="partitionMin" type="xs:int"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="partitionMax" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="partitionMin" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="validatePartitionRequest">
- <wsdl:part name="parameters" element="ns:validatePartition"/>
+ <wsdl:part name="parameters" element="ns:validatePartition"></wsdl:part>
</wsdl:message>
<wsdl:message name="validatePartitionResponse">
- <wsdl:part name="parameters" element="ns:validatePartitionResponse"/>
+ <wsdl:part name="parameters" element="ns:validatePartitionResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidPartitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="terminateContainerRequest">
+ <wsdl:part name="parameters" element="ns:terminateContainer"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="CloudControllerServiceMemberTerminationFailedException">
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceMemberTerminationFailedException"></wsdl:part>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyRequest">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"/>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"></wsdl:part>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyResponse">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"/>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidCartridgeTypeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"></wsdl:part>
</wsdl:message>
<wsdl:message name="startContainersRequest">
- <wsdl:part name="parameters" element="ns:startContainers"/>
+ <wsdl:part name="parameters" element="ns:startContainers"></wsdl:part>
</wsdl:message>
<wsdl:message name="startContainersResponse">
- <wsdl:part name="parameters" element="ns:startContainersResponse"/>
+ <wsdl:part name="parameters" element="ns:startContainersResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceUnregisteredCartridgeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"></wsdl:part>
</wsdl:message>
<wsdl:message name="terminateInstanceRequest">
- <wsdl:part name="parameters" element="ns:terminateInstance"/>
+ <wsdl:part name="parameters" element="ns:terminateInstance"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidMemberException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"></wsdl:part>
</wsdl:message>
<wsdl:message name="registerServiceRequest">
- <wsdl:part name="parameters" element="ns:registerService"/>
+ <wsdl:part name="parameters" element="ns:registerService"></wsdl:part>
</wsdl:message>
<wsdl:message name="registerServiceResponse">
- <wsdl:part name="parameters" element="ns:registerServiceResponse"/>
+ <wsdl:part name="parameters" element="ns:registerServiceResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="deployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"/>
+ <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"></wsdl:part>
</wsdl:message>
- <wsdl:message name="deployCartridgeDefinitionResponse"/>
+ <wsdl:message name="deployCartridgeDefinitionResponse"></wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidIaasProviderException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"></wsdl:part>
</wsdl:message>
<wsdl:message name="getCartridgeInfoRequest">
- <wsdl:part name="parameters" element="ns:getCartridgeInfo"/>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfo"></wsdl:part>
</wsdl:message>
<wsdl:message name="getCartridgeInfoResponse">
- <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"/>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="terminateAllContainersRequest">
- <wsdl:part name="parameters" element="ns:terminateAllContainers"/>
+ <wsdl:part name="parameters" element="ns:terminateAllContainers"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"></wsdl:part>
</wsdl:message>
<wsdl:message name="unregisterServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterService"/>
+ <wsdl:part name="parameters" element="ns:unregisterService"></wsdl:part>
</wsdl:message>
- <wsdl:message name="unregisterServiceResponse"/>
+ <wsdl:message name="unregisterServiceResponse"></wsdl:message>
<wsdl:message name="CloudControllerServiceUnregisteredClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"></wsdl:part>
</wsdl:message>
<wsdl:message name="undeployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"/>
+ <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"></wsdl:part>
</wsdl:message>
- <wsdl:message name="undeployCartridgeDefinitionResponse"/>
+ <wsdl:message name="undeployCartridgeDefinitionResponse"></wsdl:message>
<wsdl:message name="terminateAllInstancesRequest">
- <wsdl:part name="parameters" element="ns:terminateAllInstances"/>
+ <wsdl:part name="parameters" element="ns:terminateAllInstances"></wsdl:part>
</wsdl:message>
<wsdl:message name="unregisterDockerServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterDockerService"/>
+ <wsdl:part name="parameters" element="ns:unregisterDockerService"></wsdl:part>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesRequest">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridges"/>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridges"></wsdl:part>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesResponse">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"/>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="startInstanceRequest">
- <wsdl:part name="parameters" element="ns:startInstance"/>
+ <wsdl:part name="parameters" element="ns:startInstance"></wsdl:part>
</wsdl:message>
<wsdl:message name="startInstanceResponse">
- <wsdl:part name="parameters" element="ns:startInstanceResponse"/>
+ <wsdl:part name="parameters" element="ns:startInstanceResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="updateContainersRequest">
- <wsdl:part name="parameters" element="ns:updateContainers"/>
+ <wsdl:part name="parameters" element="ns:updateContainers"></wsdl:part>
</wsdl:message>
<wsdl:message name="updateContainersResponse">
- <wsdl:part name="parameters" element="ns:updateContainersResponse"/>
+ <wsdl:part name="parameters" element="ns:updateContainersResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="getClusterContextRequest">
- <wsdl:part name="parameters" element="ns:getClusterContext"/>
+ <wsdl:part name="parameters" element="ns:getClusterContext"></wsdl:part>
</wsdl:message>
<wsdl:message name="getClusterContextResponse">
- <wsdl:part name="parameters" element="ns:getClusterContextResponse"/>
+ <wsdl:part name="parameters" element="ns:getClusterContextResponse"></wsdl:part>
</wsdl:message>
<wsdl:portType name="CloudControllerServicePortType">
<wsdl:operation name="validatePartition">
- <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"/>
- <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"/>
+ <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"></wsdl:input>
+ <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"></wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="terminateContainer">
+ <wsdl:input message="ns:terminateContainerRequest" wsaw:Action="urn:terminateContainer"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceMemberTerminationFailedException" name="CloudControllerServiceMemberTerminationFailedException" wsaw:Action="urn:terminateContainerCloudControllerServiceMemberTerminationFailedException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"/>
- <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"></wsdl:input>
+ <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"/>
- <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"></wsdl:input>
+ <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="registerService">
- <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"/>
- <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"></wsdl:input>
+ <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"/>
- <wsdl:output message="ns:deployCartridgeDefinitionResponse" wsaw:Action="urn:deployCartridgeDefinitionResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"></wsdl:input>
+ <wsdl:output message="ns:deployCartridgeDefinitionResponse" wsaw:Action="urn:deployCartridgeDefinitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"/>
- <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"></wsdl:input>
+ <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"/>
+ <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"/>
- <wsdl:output message="ns:unregisterServiceResponse" wsaw:Action="urn:unregisterServiceResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"></wsdl:input>
+ <wsdl:output message="ns:unregisterServiceResponse" wsaw:Action="urn:unregisterServiceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"/>
- <wsdl:output message="ns:undeployCartridgeDefinitionResponse" wsaw:Action="urn:undeployCartridgeDefinitionResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"></wsdl:input>
+ <wsdl:output message="ns:undeployCartridgeDefinitionResponse" wsaw:Action="urn:undeployCartridgeDefinitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"/>
+ <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterDockerService">
- <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getRegisteredCartridges">
- <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"/>
- <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"/>
+ <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"></wsdl:input>
+ <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="startInstance">
- <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"/>
- <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"></wsdl:input>
+ <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="updateContainers">
- <wsdl:input message="ns:updateContainersRequest" wsaw:Action="urn:updateContainers"/>
- <wsdl:output message="ns:updateContainersResponse" wsaw:Action="urn:updateContainersResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:updateContainersCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:updateContainersRequest" wsaw:Action="urn:updateContainers"></wsdl:input>
+ <wsdl:output message="ns:updateContainersResponse" wsaw:Action="urn:updateContainersResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:updateContainersCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getClusterContext">
- <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"/>
- <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"/>
+ <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"></wsdl:input>
+ <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CloudControllerServiceSoap11Binding" type="ns:CloudControllerServicePortType">
- <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<wsdl:operation name="validatePartition">
- <soap:operation soapAction="urn:validatePartition" style="document"/>
+ <soap:operation soapAction="urn:validatePartition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="terminateContainer">
+ <soap:operation soapAction="urn:terminateContainer" style="document"></soap:operation>
+ <wsdl:input>
+ <soap:body use="literal"></soap:body>
+ </wsdl:input>
+ <wsdl:fault name="CloudControllerServiceMemberTerminationFailedException">
+ <soap:fault use="literal" name="CloudControllerServiceMemberTerminationFailedException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"/>
+ <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <soap:operation soapAction="urn:terminateInstance" style="document"/>
+ <soap:operation soapAction="urn:terminateInstance" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidMemberException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <soap:operation soapAction="urn:startContainers" style="document"/>
+ <soap:operation soapAction="urn:startContainers" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="registerService">
- <soap:operation soapAction="urn:registerService" style="document"/>
+ <soap:operation soapAction="urn:registerService" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"/>
+ <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidIaasProviderException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <soap:operation soapAction="urn:getCartridgeInfo" style="document"/>
+ <soap:operation soapAction="urn:getCartridgeInfo" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <soap:operation soapAction="urn:terminateAllContainers" style="document"/>
+ <soap:operation soapAction="urn:terminateAllContainers" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <soap:operation soapAction="urn:unregisterService" style="document"/>
+ <soap:operation soapAction="urn:unregisterService" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"/>
+ <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <soap:operation soapAction="urn:terminateAllInstances" style="document"/>
+ <soap:operation soapAction="urn:terminateAllInstances" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getRegisteredCartridges">
- <soap:operation soapAction="urn:getRegisteredCartridges" style="document"/>
+ <soap:operation soapAction="urn:getRegisteredCartridges" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="unregisterDockerService">
- <soap:operation soapAction="urn:unregisterDockerService" style="document"/>
+ <soap:operation soapAction="urn:unregisterDockerService" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<TRUNCATED>
[11/50] [abbrv] git commit: Regenerate MemberContext.toString
Posted by ni...@apache.org.
Regenerate MemberContext.toString
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9a91789d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9a91789d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9a91789d
Branch: refs/heads/master
Commit: 9a91789dae6d42d25fbb29fcb2f0701522799dea
Parents: 5e4c7c1
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:55:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/pojo/MemberContext.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9a91789d/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
index dd6013a..ec67b46 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
@@ -146,15 +146,6 @@ public class MemberContext implements Serializable {
this.networkPartitionId = networkPartitionId;
}
- @Override
- public String toString() {
- return "MemberContext [memberId=" + memberId + ", nodeId=" + nodeId + ", clusterId=" +
- clusterId + ", cartridgeType=" + cartridgeType + ", privateIpAddress=" +
- privateIpAddress + ", publicIpAddress=" + publicIpAddress + ", allocatedIpAddress=" +
- allocatedIpAddress + ", initTime=" + initTime + ", lbClusterId=" + lbClusterId +
- ", networkPartitionId=" + networkPartitionId + "]";
- }
-
@Override
public int hashCode() {
final int prime = 31;
@@ -209,5 +200,15 @@ public class MemberContext implements Serializable {
public void setProperties(Properties properties) {
this.properties = properties;
}
+
+ @Override
+ public String toString() {
+ return "MemberContext [memberId=" + memberId + ", nodeId=" + nodeId + ", instanceId="
+ + instanceId + ", clusterId=" + clusterId + ", partition=" + partition
+ + ", cartridgeType=" + cartridgeType + ", privateIpAddress=" + privateIpAddress
+ + ", publicIpAddress=" + publicIpAddress + ", allocatedIpAddress="
+ + allocatedIpAddress + ", initTime=" + initTime + ", lbClusterId=" + lbClusterId
+ + ", networkPartitionId=" + networkPartitionId + ", properties=" + properties + "]";
+ }
}
[40/50] [abbrv] git commit: Make getProperty method to use entry set
instead of key set.
Posted by ni...@apache.org.
Make getProperty method to use entry set instead of key set.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9b7ec1f0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9b7ec1f0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9b7ec1f0
Branch: refs/heads/master
Commit: 9b7ec1f08ca33c80ca9cd829881886d2c3c72833
Parents: edc243e
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 09:12:39 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/util/CloudControllerUtil.java | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9b7ec1f0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index 6374cc9..fe2493d 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -293,12 +293,14 @@ public class CloudControllerUtil {
public static String getProperty(Properties properties, String key) {
if (key != null && properties != null) {
- for (Iterator<Object> iterator = properties.keySet().iterator(); iterator.hasNext();) {
- String prop = (String) iterator.next();
- if (key.equals(prop)) {
- return properties.getProperty(prop);
- }
- }
+ for (Iterator<Entry<Object, Object>> iterator = properties.entrySet().iterator(); iterator.hasNext();) {
+ Entry<Object, Object> type = (Entry<Object, Object>) iterator.next();
+ String propName = type.getKey().toString();
+ String propValue = type.getValue().toString();
+ if (key.equals(propName)) {
+ return propValue;
+ }
+ }
}
return null;
[47/50] [abbrv] git commit: Avoid response handler throwing
HttpResponseException.
Posted by ni...@apache.org.
Avoid response handler throwing HttpResponseException.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/06b16759
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/06b16759
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/06b16759
Branch: refs/heads/master
Commit: 06b1675923fc214e172880408802531a196a0138
Parents: b0fd7b6
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 09:08:26 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/rest/KubernetesResponseHandler.java | 5 -----
1 file changed, 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/06b16759/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
index da6aa90..828d996 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
@@ -40,11 +40,6 @@ public class KubernetesResponseHandler implements ResponseHandler<KubernetesResp
IOException {
StatusLine statusLine = response.getStatusLine();
HttpEntity entity = response.getEntity();
- if (statusLine.getStatusCode() >= 300) {
- throw new HttpResponseException(
- statusLine.getStatusCode(),
- statusLine.getReasonPhrase());
- }
if (entity == null) {
throw new ClientProtocolException("Response contains no content");
}
[22/50] [abbrv] git commit: Fixing error messages.
Posted by ni...@apache.org.
Fixing error messages.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/90c37ece
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/90c37ece
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/90c37ece
Branch: refs/heads/master
Commit: 90c37ece53ddd46929d48f514c198f1d2a71e0e2
Parents: fb53d22
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:18:53 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../apache/stratos/kubernetes/client/KubernetesApiClient.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/90c37ece/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index 99485c6..4ee6e06 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -175,7 +175,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
} catch (KubernetesClientException e) {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Pod info of Pod ID: "+podId;
+ String msg = "Error while deleting Pod with ID: "+podId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
@@ -350,7 +350,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
} catch (KubernetesClientException e) {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Replication Controller info of Controller ID: "+controllerId;
+ String msg = "Error while deleting Replication Controller with Controller ID: "+controllerId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
@@ -471,7 +471,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Service info of Service ID: "+serviceId;
+ String msg = "Error while deleting Service with Service ID: "+serviceId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
[43/50] [abbrv] git commit: IP allocation asynchronously in update
containers.
Posted by ni...@apache.org.
IP allocation asynchronously in update containers.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f8353a6f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f8353a6f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f8353a6f
Branch: refs/heads/master
Commit: f8353a6fb2e84acbc9c69ceaeb025fa00e3c512e
Parents: 848f23c
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 20:33:42 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../controller/impl/CloudControllerServiceImpl.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/f8353a6f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 5acb86c..5194a76 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1721,12 +1721,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
.getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
ctxt.getProperties().getProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
- dataHolder.addMemberContext(context);
-
- // trigger topology
- // update the topology with the newly spawned member
- TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
- pod.getCurrentState().getPodIP(), pod.getCurrentState().getHostIP(), context);
+ // wait till Pod status turns to running and send member spawned.
+ ScheduledThreadExecutor exec = ScheduledThreadExecutor.getInstance();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cloud Controller is starting the instance start up thread.");
+ }
+ dataHolder.addScheduledFutureJob(context.getMemberId(), exec.schedule(new PodActivationWatcher(pod.getId(), context, kubApi), 5000));
memberContexts.add(context);
}
[13/50] [abbrv] git commit: change logging level from info to debug
Posted by ni...@apache.org.
change logging level from info to debug
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d2854232
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d2854232
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d2854232
Branch: refs/heads/master
Commit: d285423268e99ea21343a5f3e8353db3b64de646
Parents: 9d8fa2e
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 17:11:14 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../java/org/apache/stratos/cartridge/agent/CartridgeAgent.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d2854232/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
index 2db450a..3e81f06 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
@@ -88,7 +88,7 @@ public class CartridgeAgent implements Runnable {
// wait till the member spawned event
while (!CartridgeAgentConfiguration.getInstance().isInitialized()) {
try {
- if (log.isInfoEnabled()) {
+ if (log.isDebugEnabled()) {
log.info("Waiting for Cartridge Agent to be initialized...");
}
Thread.sleep(1000);
[10/50] [abbrv] git commit: No need to set a host port for a
container.
Posted by ni...@apache.org.
No need to set a host port for a container.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/08cd01b8
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/08cd01b8
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/08cd01b8
Branch: refs/heads/master
Commit: 08cd01b819a2236e99b7a53e083c4ec171f18e6c
Parents: 9a91789
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:58:10 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../functions/ContainerClusterContextToKubernetesContainer.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/08cd01b8/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
index 4c892eb..7b940d9 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -85,7 +85,6 @@ public class ContainerClusterContextToKubernetesContainer implements Function<Co
for (PortMapping portMapping : cartridge.getPortMappings()) {
Port p = new Port();
p.setContainerPort(Integer.parseInt(portMapping.getPort()));
- p.setHostPort(Integer.parseInt(portMapping.getPort()));
// In kubernetes transport protocol always be 'tcp'
p.setProtocol("tcp");
p.setName(p.getProtocol() + p.getContainerPort());
[41/50] [abbrv] git commit: If the member context is already there,
stop executing 'on Pod activated' logic.
Posted by ni...@apache.org.
If the member context is already there, stop executing 'on Pod activated' logic.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d7fc233f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d7fc233f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d7fc233f
Branch: refs/heads/master
Commit: d7fc233fc58f1073e79f6af9255a5b86a46246e1
Parents: 7373d86
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Oct 10 20:29:56 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:58 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/util/PodActivationWatcher.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d7fc233f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
index 13d1ac6..672cfeb 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/PodActivationWatcher.java
@@ -48,20 +48,21 @@ public class PodActivationWatcher implements Runnable {
@Override
public void run() {
try {
+ FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
Pod pod = kubApi.getPod(podId);
if (LOG.isDebugEnabled()) {
LOG.debug("PodActivationWatcher running : "+pod.getCurrentState().getStatus());
}
- if ("Running".equals(pod.getCurrentState().getStatus())) {
+ if ("Running".equals(pod.getCurrentState().getStatus()) && dataHolder.getMemberContextOfMemberId(podId) == null) {
String hostIP = pod.getCurrentState().getHost();
ctxt.setPublicIpAddress(hostIP);
ctxt.setPrivateIpAddress(hostIP);
- FasterLookUpDataHolder.getInstance().addMemberContext(ctxt);
+ dataHolder.addMemberContext(ctxt);
// trigger topology
TopologyBuilder.handleMemberSpawned(ctxt.getCartridgeType(), ctxt.getClusterId(),
null, hostIP, hostIP, ctxt);
- RegistryManager.getInstance().persist(FasterLookUpDataHolder.getInstance());
+ RegistryManager.getInstance().persist(dataHolder);
}
[06/50] [abbrv] git commit: Refactor RestClient to return
KubernetesResponses.
Posted by ni...@apache.org.
Refactor RestClient to return KubernetesResponses.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e15c1c39
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e15c1c39
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e15c1c39
Branch: refs/heads/master
Commit: e15c1c39d22ff6bfb637c56bf0589b88ceba1731
Parents: 8635c6f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:52:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/KubernetesApiClient.java | 137 ++++++++-----------
.../kubernetes/client/rest/RestClient.java | 24 ++--
2 files changed, 69 insertions(+), 92 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/e15c1c39/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index b20dc9b..99485c6 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -40,6 +40,7 @@ import org.apache.stratos.kubernetes.client.model.ReplicationController;
import org.apache.stratos.kubernetes.client.model.ReplicationControllerList;
import org.apache.stratos.kubernetes.client.model.Service;
import org.apache.stratos.kubernetes.client.model.ServiceList;
+import org.apache.stratos.kubernetes.client.rest.KubernetesResponse;
import org.apache.stratos.kubernetes.client.rest.RestClient;
import com.google.gson.Gson;
@@ -60,17 +61,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
public Pod getPod(String podId) throws KubernetesClientException{
try {
URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod ["+podId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Pod ["+podId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -91,15 +92,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"pods").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Pod[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -124,19 +125,19 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
log.debug("CreatePod Request Body : "+content);
}
URI uri = new URIBuilder(baseURL+"pods").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Pod "+pod+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_CONFLICT) {
+ if (res.getStatusCode() == HttpStatus.SC_CONFLICT) {
log.warn("Pod already created. "+pod);
return;
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Pod ["+pod+"] creation failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -154,20 +155,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Pod ["+podId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Pod ["+podId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Pod ["+podId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -186,17 +187,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller ["+controllerId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Replication Controller ["+controllerId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -217,15 +218,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new ReplicationController[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -253,15 +254,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"replicationControllers").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Replication Controller "+controller+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller [" + controller
+ "] creation failed. Error: "
- + res.getStatusLine().getReasonPhrase();
+ + res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -299,15 +300,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doPut(uri, content);
+ KubernetesResponse res = restClient.doPut(uri, content);
handleNullResponse("Replication Controller ["+controllerId+"] update failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED
- && res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED
+ && res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller [" + controller
+ "] update failed. Error: "
- + res.getStatusLine().getReasonPhrase();
+ + res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -329,20 +330,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Replication Controller ["+controllerId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Replication Controller ["+controllerId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller ["+controllerId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -360,17 +361,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Service ["+serviceId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Service ["+serviceId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -389,15 +390,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"services").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Service retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Service[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -422,14 +423,14 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"services").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Service "+service+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Service ["+service+"] creation failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -449,20 +450,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Service ["+serviceId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Service ["+serviceId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Service ["+serviceId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -482,15 +483,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
String labelQuery = getLabelQuery(label);
URI uri = new URIBuilder(baseURL + "pods").addParameter("labels", labelQuery).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Pod[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -512,10 +513,10 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
for (Label l : label) {
query = query.concat("name="+l.getName()+",");
}
- return query.endsWith(",") ? query.substring(0, query.length()) : query;
+ return query.endsWith(",") ? query.substring(0, query.length()-1) : query;
}
- private void handleNullResponse(String message, HttpResponse res)
+ private void handleNullResponse(String message, KubernetesResponse res)
throws KubernetesClientException {
if (res == null) {
log.error(message+ " Null response receieved.");
@@ -523,32 +524,6 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
}
- // This method gives the HTTP response string
- private String getHttpResponseString(HttpResponse response) {
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- (response.getEntity().getContent())));
-
- String output;
- String result = "";
-
- while ((output = reader.readLine()) != null) {
- result += output;
- }
-
- return result;
- } catch (SocketException e) {
- log.error("Connection problem");
- return null;
- } catch (NullPointerException e) {
- log.error("Null value return from server");
- return null;
- } catch (IOException e) {
- log.error("IO error");
- return null;
- }
- }
-
public String getBaseURL() {
return baseURL;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e15c1c39/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
index 272d04b..061c6d6 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
@@ -18,6 +18,10 @@
*/
package org.apache.stratos.kubernetes.client.rest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.SocketException;
import java.net.URI;
import org.apache.http.HttpResponse;
@@ -49,7 +53,7 @@ public class RestClient {
* @throws Exception
* if any errors occur when executing the request
*/
- public HttpResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
+ public KubernetesResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
try {
httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(resourcePath);
@@ -58,7 +62,7 @@ public class RestClient {
input.setContentType("application/json");
postRequest.setEntity(input);
- HttpResponse response = httpClient.execute(postRequest);
+ KubernetesResponse response = httpClient.execute(postRequest, new KubernetesResponseHandler());
return response;
} finally {
@@ -81,28 +85,26 @@ public class RestClient {
* @throws org.apache.http.client.ClientProtocolException and IOException
* if any errors occur when executing the request
*/
- public HttpResponse doGet(URI resourcePath) throws Exception{
+ public KubernetesResponse doGet(URI resourcePath) throws Exception{
try {
httpClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(resourcePath);
- System.out.println(getRequest.getRequestLine().getUri());
getRequest.addHeader("Content-Type", "application/json");
- HttpResponse response = httpClient.execute(getRequest);
-
+ KubernetesResponse response = httpClient.execute(getRequest, new KubernetesResponseHandler());
return response;
} finally {
httpClient.getConnectionManager().shutdown();
}
}
-
- public HttpResponse doDelete(URI resourcePath) throws Exception {
+
+ public KubernetesResponse doDelete(URI resourcePath) throws Exception {
try {
httpClient = new DefaultHttpClient();
HttpDelete httpDelete = new HttpDelete(resourcePath);
httpDelete.addHeader("Content-Type", "application/json");
- HttpResponse response = httpClient.execute(httpDelete);
+ KubernetesResponse response = httpClient.execute(httpDelete, new KubernetesResponseHandler());
return response;
@@ -111,7 +113,7 @@ public class RestClient {
}
}
- public HttpResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
+ public KubernetesResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
try {
httpClient = new DefaultHttpClient();
@@ -121,7 +123,7 @@ public class RestClient {
input.setContentType("application/json");
putRequest.setEntity(input);
- HttpResponse response = httpClient.execute(putRequest);
+ KubernetesResponse response = httpClient.execute(putRequest, new KubernetesResponseHandler());
return response;
[08/50] [abbrv] git commit: Adding the default constructor .
Posted by ni...@apache.org.
Adding the default constructor .
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ee8a1b62
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ee8a1b62
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ee8a1b62
Branch: refs/heads/master
Commit: ee8a1b62ea7aeb6f662063fe32d907c05aa991a6
Parents: e15c1c3
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:54:09 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/pojo/ContainerClusterContext.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ee8a1b62/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
index f6c9b31..137488a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
@@ -32,6 +32,9 @@ public class ContainerClusterContext implements Serializable {
// properties
private Properties properties;
+ public ContainerClusterContext() {
+ }
+
public ContainerClusterContext(String clusterId) {
this.clusterId = clusterId;
}
[20/50] [abbrv] git commit: adding constants for drool files names
Posted by ni...@apache.org.
adding constants for drool files names
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6e0eca9a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6e0eca9a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6e0eca9a
Branch: refs/heads/master
Commit: 6e0eca9a0d8b03477d7d7d994eb5c7c913158a0b
Parents: 36c40b0
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:51:38 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../org/apache/stratos/common/constants/StratosConstants.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/6e0eca9a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 1e36c15..5d3ad8c 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -150,8 +150,15 @@ public class StratosConstants {
public static final String KUBERNETES_DEPLOYER_TYPE = "kubernetes";
public static final String KUBERNETES_MASTER_IP = "KUBERNETES_MASTER_IP";
public static final String KUBERNETES_MIN_REPLICAS = "KUBERNETES_REPLICAS_MIN";
+ public static final String KUBERNETES_MAX_REPLICAS = "KUBERNETES_REPLICAS_MAX";
public static final String KUBERNETES_PORT_RANGE = "KUBERNETES_PORT_RANGE";
public static final String ALLOCATED_SERVICE_HOST_PORT = "ALLOCATED_SERVICE_HOST_PORT";
+
+ //drools related constants
+ public static final String CONTAINER_SCALE_CHECK_DROOL_FILE = "container-scaling.drl";
+ public static final String VM_SCALE_CHECK_DROOL_FILE = "scaling.drl";
+ public static final String CONTAINER_MIN_CHECK_DROOL_FILE = "container-mincheck.drl";
+ public static final String VM_MIN_CHECK_DROOL_FILE = "mincheck.drl";
// Policy and definition related constants
public static final int PUBLIC_DEFINITION = 0;
[16/50] [abbrv] git commit: adding expand cluster logic to AS
Posted by ni...@apache.org.
adding expand cluster logic to AS
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9d8fa2e3
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9d8fa2e3
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9d8fa2e3
Branch: refs/heads/master
Commit: 9d8fa2e346d95459316166ed985c83615fa34f60
Parents: 13450de
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:58:22 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:56 2014 +0530
----------------------------------------------------------------------
.../autoscaler/KubernetesClusterContext.java | 2 +-
.../cloud/controller/CloudControllerClient.java | 30 ++++++++++++++++++--
.../monitor/ClusterMonitorFactory.java | 24 +++++++++++++++-
.../autoscaler/rule/RuleTasksDelegator.java | 15 ++++++++++
4 files changed, 66 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9d8fa2e3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
index faa93bc..99ae4bc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java
@@ -50,7 +50,7 @@ public class KubernetesClusterContext implements Serializable {
private String serviceName;
private int minReplicas;
- private int maxReplicas;
+ private int maxReplicas = 10;
private int currentReplicas = 0;
// properties
http://git-wip-us.apache.org/repos/asf/stratos/blob/9d8fa2e3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index eaa80c4..b7a476a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -19,6 +19,8 @@
package org.apache.stratos.autoscaler.client.cloud.controller;
+import java.rmi.RemoteException;
+
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
@@ -31,7 +33,13 @@ import org.apache.stratos.autoscaler.exception.SpawningException;
import org.apache.stratos.autoscaler.exception.TerminationException;
import org.apache.stratos.autoscaler.kubernetes.KubernetesManager;
import org.apache.stratos.autoscaler.util.ConfUtil;
-import org.apache.stratos.cloud.controller.stub.*;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidClusterExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidMemberExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidPartitionExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceStub;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.stub.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
@@ -41,8 +49,6 @@ import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.common.kubernetes.KubernetesGroup;
import org.apache.stratos.common.kubernetes.KubernetesMaster;
-import java.rmi.RemoteException;
-
/**
* This class will call cloud controller web service to take the action decided by Autoscaler
@@ -304,4 +310,22 @@ public class CloudControllerClient {
}
}
+ public synchronized void updateKubernetesController(String clusterId, int replicas)
+ throws SpawningException {
+ try {
+ log.info(String.format("Updating kubernetes replication controller via cloud controller: " +
+ "[cluster] %s [replicas] %s", clusterId, replicas));
+ stub.updateKubernetesController(clusterId, replicas);
+ } catch (RemoteException e) {
+ String msg = "Error while updating kubernetes controller, cannot communicate with " +
+ "cloud controller service";
+ log.error(msg, e);
+ throw new SpawningException(e.getMessage(), e);
+ } catch (CloudControllerServiceInvalidClusterExceptionException e) {
+ String msg = "Error while updating kubernetes controller, invalid clusterId";
+ log.error(msg, e);
+ throw new SpawningException(e.getMessage(), e);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/9d8fa2e3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
index 208e4ce..856958d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
@@ -46,6 +46,8 @@ import org.apache.stratos.messaging.domain.topology.Cluster;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
import org.apache.stratos.messaging.domain.topology.Member;
import org.apache.stratos.messaging.domain.topology.MemberStatus;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
import org.apache.stratos.messaging.util.Constants;
/*
@@ -330,7 +332,8 @@ public class ClusterMonitorFactory {
* @param cluster - the cluster which needs to be monitored
* @return - the cluster monitor
*/
- private static KubernetesServiceClusterMonitor getDockerServiceClusterMonitor(Cluster cluster) {
+ private static KubernetesServiceClusterMonitor getDockerServiceClusterMonitor(Cluster cluster)
+ throws PolicyValidationException {
if (null == cluster) {
return null;
@@ -342,11 +345,30 @@ public class ClusterMonitorFactory {
}
AutoscalePolicy policy = PolicyManager.getInstance().getAutoscalePolicy(autoscalePolicyName);
+
+ if (policy == null) {
+ String msg = "Autoscale Policy is null. Policy name: " + autoscalePolicyName;
+ log.error(msg);
+ throw new PolicyValidationException(msg);
+ }
+
java.util.Properties props = cluster.getProperties();
String kubernetesHostClusterID = props.getProperty(StratosConstants.KUBERNETES_CLUSTER_ID);
KubernetesClusterContext kubernetesClusterCtxt = new KubernetesClusterContext(kubernetesHostClusterID,
cluster.getClusterId());
+ String minReplicasProperty = props.getProperty(StratosConstants.KUBERNETES_MIN_REPLICAS);
+ if (minReplicasProperty != null && !minReplicasProperty.isEmpty()) {
+ int minReplicas = Integer.parseInt(minReplicasProperty);
+ kubernetesClusterCtxt.setMinReplicas(minReplicas);
+ }
+
+ String maxReplicasProperty = props.getProperty(StratosConstants.KUBERNETES_MAX_REPLICAS);
+ if (maxReplicasProperty != null && !maxReplicasProperty.isEmpty()) {
+ int maxReplicas = Integer.parseInt(maxReplicasProperty);
+ kubernetesClusterCtxt.setMaxReplicas(maxReplicas);
+ }
+
KubernetesServiceClusterMonitor dockerClusterMonitor = new KubernetesServiceClusterMonitor(
kubernetesClusterCtxt,
cluster.getClusterId(),
http://git-wip-us.apache.org/repos/asf/stratos/blob/9d8fa2e3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 94def43..246dcc2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -199,4 +199,19 @@ public class RuleTasksDelegator {
}
}
+ public void delegateExpandCluster(String clusterId, int replicas) {
+ try {
+ CloudControllerClient.getInstance().updateKubernetesController(clusterId, replicas);
+ } catch (Throwable e) {
+ log.error("Cannot update kubernetes controller", e);
+ }
+ }
+
+ public int getPredictedReplicasForStat(int minReplicas, float statUpperLimit, float statPredictedValue) {
+ if (statUpperLimit == 0) {
+ return 0;
+ }
+ float predictedValue = ((minReplicas / statUpperLimit) * statPredictedValue);
+ return (int) Math.ceil(predictedValue);
+ }
}