You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/06/24 12:38:11 UTC
[2/2] stratos git commit: Adding logic to remove kubernetes services
when un-deploying an application
Adding logic to remove kubernetes services when un-deploying an application
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/04b8b25c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/04b8b25c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/04b8b25c
Branch: refs/heads/master
Commit: 04b8b25ce7946bfdd58c7b1ff5e5e186d4e154f0
Parents: 99d48ab
Author: Imesh Gunaratne <im...@apache.org>
Authored: Wed Jun 24 16:05:37 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Wed Jun 24 16:08:06 2015 +0530
----------------------------------------------------------------------
.../iaases/kubernetes/KubernetesIaas.java | 31 ++++++++++++++++++++
.../messaging/topology/TopologyBuilder.java | 9 ++++++
2 files changed, 40 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/04b8b25c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
index faeed2c..ef5e30a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
@@ -866,4 +866,35 @@ public class KubernetesIaas extends Iaas {
@Override
public void allocateIpAddresses(String clusterId, MemberContext memberContext, Partition partition) {
}
+
+ /**
+ * Remove kubernetes services if available for application cluster.
+ * @param applicationId
+ * @param clusterId
+ */
+ public static void removeKubernetesServices(String applicationId, String clusterId) {
+
+ ClusterContext clusterContext =
+ CloudControllerContext.getInstance().getClusterContext(clusterId);
+ if(clusterContext != null) {
+ String kubernetesClusterId = clusterContext.getKubernetesClusterId();
+ if(org.apache.commons.lang3.StringUtils.isNotBlank(kubernetesClusterId)) {
+ KubernetesClusterContext kubernetesClusterContext =
+ CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
+ if(kubernetesClusterContext != null) {
+ KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi();
+ for (KubernetesService kubernetesService : clusterContext.getKubernetesServices()) {
+ log.info(String.format("Deleting kubernetes service: [application-id] %s " +
+ "[service-id] %s", applicationId, kubernetesService.getId()));
+ try {
+ kubernetesApiClient.deleteService(kubernetesService.getId());
+ } catch (KubernetesClientException e) {
+ log.error(String.format("Could not delete kubernetes service: [application-id] %s " +
+ "[service-id] %s", applicationId, kubernetesService.getId()));
+ }
+ }
+ }
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/04b8b25c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
index cfa7732..cee82d6 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
@@ -18,6 +18,7 @@
*/
package org.apache.stratos.cloud.controller.messaging.topology;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.context.CloudControllerContext;
@@ -25,6 +26,7 @@ import org.apache.stratos.cloud.controller.domain.*;
import org.apache.stratos.cloud.controller.exception.CloudControllerException;
import org.apache.stratos.cloud.controller.exception.InvalidCartridgeTypeException;
import org.apache.stratos.cloud.controller.exception.InvalidMemberException;
+import org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas;
import org.apache.stratos.cloud.controller.messaging.publisher.TopologyEventPublisher;
import org.apache.stratos.cloud.controller.statistics.publisher.BAMUsageDataPublisher;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
@@ -1040,6 +1042,13 @@ public class TopologyBuilder {
event.getServiceName(), event.getClusterId(), event.getInstanceId());
TopologyEventPublisher.sendClusterTerminatingEvent(clusterTerminaingEvent);
+
+ // Remove kubernetes services if available
+ ClusterContext clusterContext =
+ CloudControllerContext.getInstance().getClusterContext(event.getClusterId());
+ if(StringUtils.isNotBlank(clusterContext.getKubernetesClusterId())) {
+ KubernetesIaas.removeKubernetesServices(event.getAppId(), event.getClusterId());
+ }
} else {
log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " +
" [instance-id] %s [current-status] %s [status-requested] %s",