You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/09/20 08:31:27 UTC

[03/17] stratos git commit: Set labels for identification when creating K8s pods and services

Set labels for identification when creating K8s pods and services


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5a9537d0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5a9537d0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5a9537d0

Branch: refs/heads/stratos-4.1.x
Commit: 5a9537d09a0e7a745e2ab8b7eac51027e59688ef
Parents: 7d6279d
Author: Akila Perera <ra...@gmail.com>
Authored: Sat Sep 19 19:58:57 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Sun Sep 20 00:19:40 2015 +0530

----------------------------------------------------------------------
 .../org.apache.stratos.cloud.controller/pom.xml |  7 +-
 .../cloud/controller/domain/MemberContext.java  | 12 ++--
 .../iaases/kubernetes/KubernetesIaas.java       | 24 +++++++
 .../kubernetes/client/KubernetesApiClient.java  | 69 ++++++++++----------
 .../KubernetesAPIClientInterface.java           | 16 +++--
 .../client/live/AbstractLiveTest.java           | 22 ++++---
 .../live/KubernetesApiClientLiveTest.java       | 26 ++++++--
 7 files changed, 113 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/components/org.apache.stratos.cloud.controller/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/pom.xml b/components/org.apache.stratos.cloud.controller/pom.xml
index 2f3c841..b771e1a 100644
--- a/components/org.apache.stratos.cloud.controller/pom.xml
+++ b/components/org.apache.stratos.cloud.controller/pom.xml
@@ -54,11 +54,10 @@
                         </Private-Package>
                         <Import-Package>
                             !org.apache.stratos.cloud.controller.*,
-                            org.apache.commons.logging,
-                            org.apache.commons.io.*,
+                            org.apache.commons.*,
                             org.wso2.carbon.utils.*,
-                            org.apache.stratos.kubernetes.client; version="${project.version}",
-                            org.apache.stratos.kubernetes.client.exceptions; version="${project.version}",
+                            org.apache.stratos.common.*; version="${project.version}",
+                            org.apache.stratos.kubernetes.client.*; version="${project.version}",
                             org.jclouds.aws.ec2.*; version=${jclouds.version},
                             org.jclouds.ec2.*; version=${jclouds.version},
                             org.jclouds.compute.*; version=${jclouds.version},

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/MemberContext.java
index ebe2940..c0e50bd 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/MemberContext.java
@@ -73,7 +73,7 @@ public class MemberContext implements Serializable {
     private Properties properties;
     private NameValuePair[] dynamicPayload;
     private String kubernetesPodId;
-    private String kubernetesPodLabel;
+    private String kubernetesPodName;
     private LoadBalancingIPType loadBalancingIPType;
 
     public MemberContext(String applicationId, String cartridgeType, String clusterId, String memberId) {
@@ -271,12 +271,12 @@ public class MemberContext implements Serializable {
         return kubernetesPodId;
     }
 
-    public void setKubernetesPodLabel(String kubernetesPodLabel) {
-        this.kubernetesPodLabel = kubernetesPodLabel;
+    public void setKubernetesPodName(String kubernetesPodLabel) {
+        this.kubernetesPodName = kubernetesPodLabel;
     }
 
-    public String getKubernetesPodLabel() {
-        return kubernetesPodLabel;
+    public String getKubernetesPodName() {
+        return kubernetesPodName;
     }
 
     public LoadBalancingIPType getLoadBalancingIPType() {
@@ -305,7 +305,7 @@ public class MemberContext implements Serializable {
                 + ", lbClusterId=" + lbClusterId
                 + ", networkPartitionId=" + networkPartitionId
                 + ", kubernetesPodId=" + kubernetesPodId
-                + ", kubernetesPodLabel=" + kubernetesPodLabel
+                + ", kubernetesPodName=" + kubernetesPodName
                 + ", loadBalancingIPType=" + loadBalancingIPType
                 + ", instanceMetadata=" + instanceMetadata
                 + ", properties=" + properties + "]";

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/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 5867184..fbb4c7c 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
@@ -977,6 +977,7 @@ public class KubernetesIaas extends Iaas {
 
             for (KubernetesService kubernetesService : kubernetesServices) {
                 KubernetesClusterContext kubernetesClusterContext =
+<<<<<<< HEAD
                         CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesService.getKubernetesClusterId());
                 KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi();
                 String serviceId = kubernetesService.getId();
@@ -991,6 +992,29 @@ public class KubernetesIaas extends Iaas {
                 } catch (KubernetesClientException e) {
                     log.error(String.format("Could not delete kubernetes service: [application-id] %s " +
                             "[service-id] %s", clusterContext.getApplicationId(), serviceId));
+=======
+                        CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
+
+                if (kubernetesClusterContext != null) {
+                    KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi();
+                    ArrayList<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices());
+
+                    for (KubernetesService kubernetesService : kubernetesServices) {
+                        String serviceId = kubernetesService.getId();
+                        log.info(String.format("Deleting kubernetes service: [application-id] %s " +
+                                "[service-id] %s", applicationId, serviceId));
+
+                        try {
+                            kubernetesApiClient.deleteService(serviceId);
+                            kubernetesClusterContext.deallocatePort(kubernetesService.getPort());
+                            kubernetesClusterContext.removeKubernetesService(serviceId);
+                            clusterContext.removeKubernetesService(serviceId);
+                        } catch (KubernetesClientException e) {
+                            log.error(String.format("Could not delete kubernetes service: [application-id] %s " +
+                                    "[service-id] %s", applicationId, serviceId));
+                        }
+                    }
+>>>>>>> Set labels for identification when creating K8s pods and services
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/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 7dffd60..5d0aff1 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
@@ -46,7 +46,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
      * Create new pod
      *
      * @param podId                Identifier of the pod
-     * @param podLabel             Pod name to be used by the pod label
+     * @param podName              Pod name to be used by the pod label
+     * @param podLabels            Map of labels to be applied to the pod
      * @param dockerImage          Docker image to be used by the pod
      * @param cpu                  Number of cpu cores
      * @param memory               Memory allocation in megabytes
@@ -55,35 +56,29 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
      * @throws KubernetesClientException
      */
     @Override
-    public void createPod(String podId, String podLabel, String dockerImage, String cpu, String memory, List<ContainerPort> ports,
-                          List<EnvVar> environmentVariables)
+    public void createPod(String podId, String podName, Map<String, String> podLabels, String dockerImage, String cpu,
+                          String memory, List<ContainerPort> ports, List<EnvVar> environmentVariables)
             throws KubernetesClientException {
 
         try {
 
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Creating kubernetes pod: [pod-id] %s [pod-name] %s [docker-image] %s " +
-                                "[cpu] %s [memory] %s [ports] %s",
-                        podId, podLabel, dockerImage, cpu, memory, ports));
+                        "[cpu] %s [memory] %s [ports] %s", podId, podLabels, dockerImage, cpu, memory, ports));
             }
 
             // Create pod definition
             Pod pod = new Pod();
             pod.setApiVersion(Pod.ApiVersion.V_1);
             pod.setKind(KubernetesConstants.KIND_POD);
-
             pod.setSpec(new PodSpec());
             pod.setMetadata(new ObjectMeta());
-
             pod.getMetadata().setName(podId);
-
-            Map<String, String> labels = new HashMap<String, String>();
-            labels.put(KubernetesConstants.LABEL_NAME, podLabel);
-            pod.getMetadata().setLabels(labels);
+            pod.getMetadata().setLabels(podLabels);
 
             // Set container template
             Container containerTemplate = new Container();
-            containerTemplate.setName(podLabel);
+            containerTemplate.setName(podName);
             containerTemplate.setImage(dockerImage);
             containerTemplate.setEnv(environmentVariables);
             List<Container> containerTemplates = new ArrayList<Container>();
@@ -110,7 +105,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Kubernetes pod created successfully: [pod-id] %s", podId));
             }
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = String.format("Could not create kubernetes pod: [pod-id] %s", podId);
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);
@@ -121,7 +117,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
     public Pod getPod(String podId) throws KubernetesClientException {
         try {
             return kubernetesClient.getPod(podId);
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = String.format("Could not retrieve kubernetes pod: [pod-id] %s", podId);
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);
@@ -132,7 +129,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
     public List<Pod> getPods() throws KubernetesClientException {
         try {
             return kubernetesClient.getPods().getItems();
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = "Error while retrieving kubernetes pods.";
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);
@@ -143,7 +141,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
     public void deletePod(String podId) throws KubernetesClientException {
         try {
             kubernetesClient.deletePod(podId);
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String message = String.format("Could not delete kubernetes pod: [pod-id] %s", podId);
             log.error(message, e);
             throw new KubernetesClientException(message, e);
@@ -154,7 +153,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
      * Create kubernetes service
      *
      * @param serviceId         Service id
-     * @param serviceLabel      Service name to be used by the label name
+     * @param serviceName       Service name to be used by the label name
+     * @param serviceLabels     Service labels map
      * @param servicePort       Port to be exposed by the kubernetes node
      * @param containerPortName Container port name defined in the port label
      * @param containerPort     Container port
@@ -163,15 +163,16 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
      * @throws KubernetesClientException
      */
     @Override
-    public void createService(String serviceId, String serviceLabel, int servicePort, String serviceType,
-                              String containerPortName, int containerPort, String sessionAffinity)
+    public void createService(String serviceId, String serviceName, Map<String, String> serviceLabels, int servicePort,
+                              String serviceType, String containerPortName, int containerPort, String sessionAffinity)
             throws KubernetesClientException {
 
         try {
             if (log.isDebugEnabled()) {
-                log.debug(String.format("Creating kubernetes service: [service-id] %s [service-name] %s [service-port] " +
-                                "%d [container-port-name] %s [service-type] %s", serviceId, serviceLabel, servicePort,
-                        containerPortName, serviceType));
+                log.debug(
+                        String.format("Creating kubernetes service: [service-id] %s [service-name] %s [service-port] " +
+                                        "%d [container-port-name] %s [service-type] %s", serviceId, serviceName,
+                                servicePort, containerPortName, serviceType));
             }
 
             // Create service definition
@@ -203,14 +204,12 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
             ports.add(port);
             service.getSpec().setPorts(ports);
 
-            // Set label
-            Map<String, String> labels = new HashMap<String, String>();
-            labels.put(KubernetesConstants.LABEL_NAME, serviceLabel);
-            service.getMetadata().setLabels(labels);
+            // Set labels
+            service.getMetadata().setLabels(serviceLabels);
 
             // Set service selector
             Map<String, String> selector = new HashMap<String, String>();
-            selector.put(KubernetesConstants.LABEL_NAME, serviceLabel);
+            selector.put(KubernetesConstants.LABEL_NAME, serviceName);
             service.getSpec().setSelector(selector);
 
             // Invoke the api to create the service
@@ -218,12 +217,13 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
 
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Kubernetes service created successfully: [service-id] %s [service-name] %s " +
-                                "[node-port] %d [container-port-name] %s [container-port] %d", serviceId, serviceLabel,
+                                "[node-port] %d [container-port-name] %s [container-port] %d", serviceId, serviceName,
                         servicePort, containerPortName, containerPort));
             }
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String message = String.format("Could not create kubernetes service: [service-id] %s [service-name] %s " +
-                            "[node-port] %d [container-port-name] %s [container-port] %d", serviceId, serviceLabel,
+                            "[node-port] %d [container-port-name] %s [container-port] %d", serviceId, serviceName,
                     servicePort, containerPortName, containerPort);
             log.error(message, e);
             throw new KubernetesClientException(message, e);
@@ -235,7 +235,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
             throws KubernetesClientException {
         try {
             return kubernetesClient.getService(serviceId);
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = String.format("Could not retrieve kubernetes service: [service-id] %s", serviceId);
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);
@@ -246,7 +247,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
     public List<Service> getServices() throws KubernetesClientException {
         try {
             return kubernetesClient.getServices().getItems();
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = "Could not retrieve kubernetes services";
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);
@@ -267,7 +269,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Kubernetes service deleted successfully: [service-id] %s", serviceId));
             }
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             String msg = String.format("Could not delete kubernetes service: [service-id] %s", serviceId);
             log.error(msg, e);
             throw new KubernetesClientException(msg, e);

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
index dd980fe..95ea1e7 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
@@ -25,7 +25,9 @@ import io.fabric8.kubernetes.api.model.EnvVar;
 import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.Service;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
+
 import java.util.List;
+import java.util.Map;
 
 
 public interface KubernetesAPIClientInterface {
@@ -34,7 +36,8 @@ public interface KubernetesAPIClientInterface {
      * Create pod.
      *
      * @param podId                id of the pod
-     * @param podLabel             pod label
+     * @param podName              pod label
+     * @param podLabels            Map of labels to be applied to the pod
      * @param dockerImage          docker image name
      * @param cpu                  number of cpu cores
      * @param memory               memory allocation in mega bytes
@@ -42,8 +45,8 @@ public interface KubernetesAPIClientInterface {
      * @param environmentVariables environment variables
      * @throws KubernetesClientException
      */
-    public void createPod(String podId, String podLabel, String dockerImage, String cpu, String memory,
-                          List<ContainerPort> ports, List<EnvVar> environmentVariables)
+    public void createPod(String podId, String podName, Map<String, String> podLabels, String dockerImage, String cpu,
+                          String memory, List<ContainerPort> ports, List<EnvVar> environmentVariables)
             throws KubernetesClientException;
 
     /**
@@ -75,7 +78,8 @@ public interface KubernetesAPIClientInterface {
      * Create service.
      *
      * @param serviceId
-     * @param serviceLabel
+     * @param serviceName
+     * @param podLabels
      * @param servicePort
      * @param serviceType
      * @param containerPortName
@@ -83,8 +87,8 @@ public interface KubernetesAPIClientInterface {
      * @param sessionAffinity
      * @throws KubernetesClientException
      */
-    public void createService(String serviceId, String serviceLabel, int servicePort, String serviceType,
-                              String containerPortName, int containerPort, String sessionAffinity)
+    public void createService(String serviceId, String serviceName, Map<String, String> podLabels, int servicePort,
+                              String serviceType, String containerPortName, int containerPort, String sessionAffinity)
             throws KubernetesClientException;
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/AbstractLiveTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/AbstractLiveTest.java b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/AbstractLiveTest.java
index 2fc2cc43..f8f2155 100644
--- a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/AbstractLiveTest.java
+++ b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/AbstractLiveTest.java
@@ -124,12 +124,13 @@ public class AbstractLiveTest extends TestCase {
         log.info("Kubernetes resources cleaned");
     }
 
-    protected void createPod(String podId, String podName, String containerPortName, String cpu, String memory)
+    protected void createPod(String podId, String podName, Map<String, String> labelMap, String containerPortName,
+                             String cpu, String memory)
             throws KubernetesClientException {
 
         log.info("Creating pod: [pod] " + podId);
         List<ContainerPort> ports = createPorts(containerPortName);
-        client.createPod(podId, podName, dockerImage, cpu, memory, ports, null);
+        client.createPod(podId, podName, labelMap, dockerImage, cpu, memory, ports, null);
         podIdList.add(podId);
 
         sleep(2000);
@@ -190,15 +191,18 @@ public class AbstractLiveTest extends TestCase {
             for (String podId : podIdList) {
                 deletePod(podId);
             }
-        } catch (KubernetesClientException e) {
+        }
+        catch (KubernetesClientException e) {
             log.error("Could not delete pods", e);
         }
     }
 
-    protected void createService(String serviceId, String serviceName, int nodePort, String serviceType, String containerPortName,
-                                 int containerPort, List<String> publicIPs) throws KubernetesClientException, InterruptedException, IOException {
+    protected void createService(String serviceId, String serviceName, Map<String, String> labelMap, int nodePort,
+                                 String serviceType, String containerPortName, int containerPort,
+                                 List<String> publicIPs)
+            throws KubernetesClientException, InterruptedException, IOException {
         log.info("Creating service...");
-        client.createService(serviceId, serviceName, nodePort, serviceType, containerPortName, containerPort,
+        client.createService(serviceId, serviceName, labelMap, nodePort, serviceType, containerPortName, containerPort,
                 KubernetesConstants.SESSION_AFFINITY_CLIENT_IP);
         serviceIdList.add(serviceId);
 
@@ -227,7 +231,8 @@ public class AbstractLiveTest extends TestCase {
             for (String serviceId : serviceIdList) {
                 deleteService(serviceId);
             }
-        } catch (KubernetesClientException e) {
+        }
+        catch (KubernetesClientException e) {
             log.error("Could not delete services", e);
         }
     }
@@ -235,7 +240,8 @@ public class AbstractLiveTest extends TestCase {
     protected void sleep(long time) {
         try {
             Thread.sleep(time);
-        } catch (InterruptedException ignore) {
+        }
+        catch (InterruptedException ignore) {
         }
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/5a9537d0/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
index c7ae1da..4913be6 100644
--- a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
+++ b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
@@ -20,7 +20,6 @@
  */
 package org.apache.stratos.kubernetes.client.live;
 
-import io.fabric8.kubernetes.api.model.Pod;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
@@ -28,6 +27,8 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import java.net.Socket;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Notes:
@@ -47,9 +48,13 @@ public class KubernetesApiClientLiveTest extends AbstractLiveTest {
     @Test
     public void testPodCreation() throws Exception {
         log.info("Testing pod creation...");
+        Map<String, String> podLabels1 = new HashMap<>();
+        podLabels1.put("applicationId", "my-application-1");
+        createPod("stratos-test-pod-1", "stratos-test-pod", podLabels1, "http-1", "1", "512Mi");
 
-        createPod("stratos-test-pod-1", "stratos-test-pod", "http-1", "1", "512Mi");
-        createPod("stratos-test-pod-2", "stratos-test-pod", "http-1", "2", "4Gi");
+        Map<String, String> podLabels2 = new HashMap<>();
+        podLabels2.put("applicationId", "my-application-2");
+        createPod("stratos-test-pod-2", "stratos-test-pod", podLabels2, "http-1", "2", "4Gi");
 
         deletePod("stratos-test-pod-1");
         deletePod("stratos-test-pod-2");
@@ -73,10 +78,19 @@ public class KubernetesApiClientLiveTest extends AbstractLiveTest {
         String containerPortName = "http-1";
         String serviceType = "NodePort";
 
-        createService(serviceId, serviceName, SERVICE_PORT, serviceType, containerPortName, containerPort, minionPublicIPs);
+        Map<String, String> serviceLabels1 = new HashMap<>();
+        serviceLabels1.put("applicationId", "my-application-1");
+        createService(serviceId, serviceName, serviceLabels1, SERVICE_PORT, serviceType, containerPortName,
+                containerPort,
+                minionPublicIPs);
 
-        createPod("stratos-test-pod-3", serviceName, containerPortName, "1", "512");
-        createPod("stratos-test-pod-4", serviceName, containerPortName, "2", "512");
+        Map<String, String> podLabels1 = new HashMap<>();
+        podLabels1.put("applicationId", "my-application-3");
+        createPod("stratos-test-pod-3", serviceName, podLabels1, containerPortName, "1", "512");
+
+        Map<String, String> podLabels2 = new HashMap<>();
+        podLabels2.put("applicationId", "my-application-4");
+        createPod("stratos-test-pod-4", serviceName, podLabels2, containerPortName, "2", "512");
 
         if (testServiceSocket) {
             // test service accessibility