Moving Kubernetes Host registration to CC.

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

Branch: refs/heads/master
Commit: 98244f78717fb3502653f0ea5963beb75bbfdcff
Parents: e20df6f
Author: Nirmal Fernando <[email protected]>
Authored: Tue Dec 2 19:35:31 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Dec 2 19:39:19 2014 +0530

----------------------------------------------------------------------
 .../context/CloudControllerContext.java         | 156 ++++
 .../InvalidKubernetesGroupException.java        |  49 ++
 .../InvalidKubernetesHostException.java         |  49 ++
 .../InvalidKubernetesMasterException.java       |  27 +
 .../KubernetesEndpointValidationException.java  |  52 ++
 .../NonExistingKubernetesGroupException.java    |  49 ++
 .../NonExistingKubernetesHostException.java     |  48 ++
 .../NonExistingKubernetesMasterException.java   |  48 ++
 .../services/CloudControllerService.java        |  82 +-
 .../impl/CloudControllerServiceImpl.java        | 218 +++++
 .../util/CloudControllerConstants.java          |   6 +
 .../controller/util/CloudControllerUtil.java    | 112 +++
 .../org/apache/stratos/common/Properties.java   |  49 +-
 .../common/kubernetes/KubernetesGroup.java      |   1 +
 .../common/kubernetes/KubernetesHost.java       |   1 +
 .../common/kubernetes/KubernetesMaster.java     |   2 +
 .../stratos/common/kubernetes/PortRange.java    |   1 +
 .../client/CloudControllerServiceClient.java    |  58 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |  99 ++-
 .../bean/util/converter/PojoConverter.java      |  79 +-
 .../pom.xml                                     |   3 +-
 .../main/resources/CloudControllerService.wsdl  | 860 +++++++++++++++++--
 22 files changed, 1887 insertions(+), 162 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
index eeee5d5..2a7dafb 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
@@ -20,10 +20,15 @@ package org.apache.stratos.cloud.controller.context;
 
 import org.apache.axis2.clustering.ClusteringAgent;
 import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.apache.stratos.common.kubernetes.KubernetesGroup;
+import org.apache.stratos.common.kubernetes.KubernetesHost;
+import org.apache.stratos.common.kubernetes.KubernetesMaster;
 import org.apache.stratos.cloud.controller.domain.*;
+import org.apache.stratos.cloud.controller.exception.*;
 import org.apache.stratos.cloud.controller.internal.ServiceReferenceHolder;
 import org.apache.stratos.cloud.controller.registry.Deserializer;
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
@@ -31,8 +36,12 @@ import 
org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.wso2.carbon.databridge.agent.thrift.AsyncDataPublisher;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
+import com.google.common.net.InetAddresses;
+
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -49,6 +58,7 @@ public class CloudControllerContext implements Serializable {
     private static final long serialVersionUID = -2662307358852779897L;
     private static final Log log = 
LogFactory.getLog(CloudControllerContext.class);
 
+    public static final String KUB_GROUP_ID_TO_GROUP_MAP = 
"KUB_GROUP_ID_TO_GROUP_MAP";
     public static final String CC_CLUSTER_ID_TO_MEMBER_CTX = 
"CC_CLUSTER_ID_TO_MEMBER_CTX";
     public static final String CC_MEMBER_ID_TO_MEMBER_CTX = 
"CC_MEMBER_ID_TO_MEMBER_CTX";
     public static final String CC_MEMBER_ID_TO_SCH_TASK = 
"CC_MEMBER_ID_TO_SCH_TASK";
@@ -63,6 +73,13 @@ public class CloudControllerContext implements Serializable {
     private final DistributedObjectProvider distributedObjectProvider;
 
        /* We keep following maps in order to make the look up time, small. */
+    
+    /** 
+     * KubernetesGroups against groupIds
+     * Key - Kubernetes group id
+     * Value - {@link KubernetesGroup}
+     */
+    private Map<String, KubernetesGroup> kubernetesGroupsMap;
 
     /**
      * Key - cluster id
@@ -134,6 +151,7 @@ public class CloudControllerContext implements Serializable 
{
         distributedObjectProvider = 
ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
 
         // Initialize objects
+        kubernetesGroupsMap = 
distributedObjectProvider.getMap(KUB_GROUP_ID_TO_GROUP_MAP);
         clusterIdToMemberContextListMap = 
distributedObjectProvider.getMap(CC_CLUSTER_ID_TO_MEMBER_CTX);
         memberIdToMemberContextMap = 
distributedObjectProvider.getMap(CC_MEMBER_ID_TO_MEMBER_CTX);
         memberIdToScheduledTaskMap = 
distributedObjectProvider.getMap(CC_MEMBER_ID_TO_SCH_TASK);
@@ -364,6 +382,143 @@ public class CloudControllerContext implements 
Serializable {
                 kubernetesClusterContext.getKubernetesClusterId(),
                 kubernetesClusterContext);
     }
+    
+    /**
+     * Remove a registered Kubernetes group from registry
+     */
+    public synchronized void removeKubernetesGroup(String kubernetesGroupId) {
+        // Remove entry from information model
+        distributedObjectProvider.removeFromMap(kubernetesGroupsMap, 
kubernetesGroupId);
+    }
+
+    /**
+     * Remove a registered Kubernetes host from registry
+     */
+    public synchronized boolean removeKubernetesHost(String kubernetesHostId) 
throws NonExistingKubernetesHostException {
+        if (kubernetesHostId == null) {
+            throw new NonExistingKubernetesHostException("Kubernetes host id 
can not be null");
+        }
+        if (log.isInfoEnabled()) {
+            log.info("Removing Kubernetes Host: " + kubernetesHostId);
+        }
+        try {
+            KubernetesGroup kubernetesGroupStored = 
getKubernetesGroupContainingHost(kubernetesHostId);
+
+            // Kubernetes master can not be removed
+            if 
(kubernetesGroupStored.getKubernetesMaster().getHostId().equals(kubernetesHostId))
 {
+                throw new NonExistingKubernetesHostException("Kubernetes 
master is not allowed to be removed [id] " + kubernetesHostId);
+            }
+
+            List<KubernetesHost> kubernetesHostList = new 
ArrayList<KubernetesHost>();
+            for (KubernetesHost kubernetesHost : 
kubernetesGroupStored.getKubernetesHosts()) {
+                if (!kubernetesHost.getHostId().equals(kubernetesHostId)) {
+                    kubernetesHostList.add(kubernetesHost);
+                }
+            }
+            // member count will be equal only when host object was not found
+            if (kubernetesHostList.size() == 
kubernetesGroupStored.getKubernetesHosts().length) {
+                throw new NonExistingKubernetesHostException("Kubernetes host 
not found for [id] " + kubernetesHostId);
+            }
+            KubernetesHost[] kubernetesHostsArray = new 
KubernetesHost[kubernetesHostList.size()];
+            kubernetesHostList.toArray(kubernetesHostsArray);
+
+            // Update information model
+            kubernetesGroupStored.setKubernetesHosts(kubernetesHostsArray);
+
+            if (log.isInfoEnabled()) {
+                log.info(String.format("Kubernetes host removed successfully: 
[id] %s", kubernetesHostId));
+            }
+
+            return true;
+        } catch (Exception e) {
+            throw new NonExistingKubernetesHostException(e.getMessage(), e);
+        }
+    }
+
+    public void addKubernetesGroupToInformationModel(KubernetesGroup 
kubernetesGroup) {
+        distributedObjectProvider.putToMap(kubernetesGroupsMap, 
kubernetesGroup.getGroupId(), kubernetesGroup);
+    }
+    
+    public boolean kubernetesGroupExists(KubernetesGroup kubernetesGroup) {
+        return kubernetesGroupsMap.containsKey(kubernetesGroup);
+    }
+
+    public boolean kubernetesHostExists(String hostId) {
+        if (StringUtils.isEmpty(hostId)) {
+            return false;
+        }
+        for (KubernetesGroup kubernetesGroup : kubernetesGroupsMap.values()) {
+            if (kubernetesGroup.getKubernetesHosts() != null) {
+                for (KubernetesHost kubernetesHost : 
kubernetesGroup.getKubernetesHosts()) {
+                    if (kubernetesHost.getHostId().equals(hostId)) {
+                        return true;
+                    }
+                }
+            }
+            if 
(hostId.equals(kubernetesGroup.getKubernetesMaster().getHostId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    public KubernetesHost[] getKubernetesHostsInGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException {
+        if (StringUtils.isEmpty(kubernetesGroupId)) {
+            throw new NonExistingKubernetesGroupException("Cannot find for 
empty group id");
+        }
+
+        KubernetesGroup kubernetesGroup = 
kubernetesGroupsMap.get(kubernetesGroupId);
+        if (kubernetesGroup != null) {
+            return kubernetesGroup.getKubernetesHosts();
+        }
+        throw new NonExistingKubernetesGroupException("Kubernetes group not 
found for group id: " + kubernetesGroupId);
+    }
+
+    public KubernetesMaster getKubernetesMasterInGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException {
+        if (StringUtils.isEmpty(kubernetesGroupId)) {
+            throw new NonExistingKubernetesGroupException("Cannot find for 
empty group id");
+        }
+        KubernetesGroup kubernetesGroup = 
kubernetesGroupsMap.get(kubernetesGroupId);
+        if (kubernetesGroup != null) {
+            return kubernetesGroup.getKubernetesMaster();
+        }
+        throw new NonExistingKubernetesGroupException("Kubernetes master not 
found for group id: " + kubernetesGroupId);
+    }
+
+    public KubernetesGroup getKubernetesGroup(String groupId) throws 
NonExistingKubernetesGroupException {
+        if (StringUtils.isEmpty(groupId)) {
+            throw new NonExistingKubernetesGroupException("Cannot find for 
empty group id");
+        }
+        KubernetesGroup kubernetesGroup = kubernetesGroupsMap.get(groupId);
+        if (kubernetesGroup != null) {
+            return kubernetesGroup;
+        }
+        throw new NonExistingKubernetesGroupException("Kubernetes group not 
found for id: " + groupId);
+    }
+
+    public KubernetesGroup getKubernetesGroupContainingHost(String hostId) 
throws NonExistingKubernetesGroupException {
+        if (StringUtils.isEmpty(hostId)) {
+            return null;
+        }
+        for (KubernetesGroup kubernetesGroup : kubernetesGroupsMap.values()) {
+            if 
(hostId.equals(kubernetesGroup.getKubernetesMaster().getHostId())) {
+                return kubernetesGroup;
+            }
+            if (kubernetesGroup.getKubernetesHosts() != null) {
+                for (KubernetesHost kubernetesHost : 
kubernetesGroup.getKubernetesHosts()) {
+                    if (kubernetesHost.getHostId().equals(hostId)) {
+                        return kubernetesGroup;
+                    }
+                }
+            }
+        }
+        throw new NonExistingKubernetesGroupException("Kubernetes group not 
found containing host id: " + hostId);
+    }
+
+    public KubernetesGroup[] getKubernetesGroups() {
+        return kubernetesGroupsMap.values().toArray(new 
KubernetesGroup[kubernetesGroupsMap.size()]);
+    }
 
     public boolean isClustered() {
         return clustered;
@@ -390,6 +545,7 @@ public class CloudControllerContext implements Serializable 
{
                     if (dataObj instanceof CloudControllerContext) {
                         CloudControllerContext serializedObj = 
(CloudControllerContext) dataObj;
 
+                        copyMap(kubernetesGroupsMap, 
serializedObj.kubernetesGroupsMap);
                         copyMap(clusterIdToMemberContextListMap, 
serializedObj.clusterIdToMemberContextListMap);
                         copyMap(memberIdToMemberContextMap, 
serializedObj.memberIdToMemberContextMap);
                         copyMap(memberIdToScheduledTaskMap, 
serializedObj.memberIdToScheduledTaskMap);

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesGroupException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesGroupException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesGroupException.java
new file mode 100644
index 0000000..db5fb30
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesGroupException.java
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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;
+
+/**
+ * Exception class for handling invalid Kubernetes Group
+ */
+public class InvalidKubernetesGroupException extends Exception {
+
+    private String message;
+
+    public InvalidKubernetesGroupException(String message, Exception 
exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public InvalidKubernetesGroupException(Exception exception){
+        super(exception);
+    }
+
+    public InvalidKubernetesGroupException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesHostException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesHostException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesHostException.java
new file mode 100644
index 0000000..0aa789e
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesHostException.java
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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;
+
+/**
+ * Exception class for handling invalid Kubernetes Host
+ */
+public class InvalidKubernetesHostException extends Exception {
+
+    private String message;
+
+    public InvalidKubernetesHostException(String message, Exception exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public InvalidKubernetesHostException(Exception exception){
+        super(exception);
+    }
+
+    public InvalidKubernetesHostException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesMasterException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesMasterException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesMasterException.java
new file mode 100644
index 0000000..da52e9a
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/InvalidKubernetesMasterException.java
@@ -0,0 +1,27 @@
+package org.apache.stratos.cloud.controller.exception;
+
+/**
+ * Exception class for handling invalid Kubernetes Master
+ */
+public class InvalidKubernetesMasterException extends Exception {
+    private String message;
+
+    public InvalidKubernetesMasterException(String message, Exception 
exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public InvalidKubernetesMasterException(Exception exception){
+        super(exception);
+    }
+
+    public InvalidKubernetesMasterException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/KubernetesEndpointValidationException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/KubernetesEndpointValidationException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/KubernetesEndpointValidationException.java
new file mode 100644
index 0000000..8394a62
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/KubernetesEndpointValidationException.java
@@ -0,0 +1,52 @@
+/*
+ *
+ * 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;
+
+/**
+ * Exception class for handling Kubernetes endpoint validation
+ */
+public class KubernetesEndpointValidationException extends Exception {
+    private String message;
+
+    public KubernetesEndpointValidationException(String message, Exception 
exception){
+        super(message, exception);
+        this.setMessage(message);
+    }
+
+    public KubernetesEndpointValidationException(String msg) {
+        super(msg);
+        this.message = msg;
+    }
+    public KubernetesEndpointValidationException(Exception exception){
+        super(exception);
+    }
+
+
+    public String getMessage() {
+        return message;
+    }
+
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesGroupException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesGroupException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesGroupException.java
new file mode 100644
index 0000000..ba48fbe
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesGroupException.java
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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;
+
+/**
+ * Exception class for handling non-existing Kubernetes Group
+ */
+public class NonExistingKubernetesGroupException extends Exception {
+
+    private String message;
+
+    public NonExistingKubernetesGroupException(String message, Exception 
exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public NonExistingKubernetesGroupException(Exception exception){
+        super(exception);
+    }
+
+    public NonExistingKubernetesGroupException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesHostException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesHostException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesHostException.java
new file mode 100644
index 0000000..afae051
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesHostException.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;
+
+/**
+ * Exception class for handling non-existing Kubernetes Host
+ */
+public class NonExistingKubernetesHostException extends Exception {
+    private String message;
+
+    public NonExistingKubernetesHostException(String message, Exception 
exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public NonExistingKubernetesHostException(Exception exception){
+        super(exception);
+    }
+
+    public NonExistingKubernetesHostException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesMasterException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesMasterException.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesMasterException.java
new file mode 100644
index 0000000..8eb50c1
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/NonExistingKubernetesMasterException.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;
+
+/**
+ * Exception class for handling non-existing Kubernetes Master
+ */
+public class NonExistingKubernetesMasterException extends Exception {
+    private String message;
+
+    public NonExistingKubernetesMasterException(String message, Exception 
exception){
+        super(message, exception);
+        this.message = message;
+    }
+
+    public NonExistingKubernetesMasterException(Exception exception){
+        super(exception);
+    }
+
+    public NonExistingKubernetesMasterException(String msg){
+        super(msg);
+        this.message = msg;
+    }
+
+    @Override
+    public String getMessage() {
+        return this.message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
index 487abfd..87e8913 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
@@ -19,8 +19,10 @@
 package org.apache.stratos.cloud.controller.services;
 
 import org.apache.stratos.cloud.controller.domain.*;
-import org.apache.stratos.cloud.controller.domain.Partition;
 import org.apache.stratos.cloud.controller.exception.*;
+import org.apache.stratos.common.kubernetes.KubernetesGroup;
+import org.apache.stratos.common.kubernetes.KubernetesHost;
+import org.apache.stratos.common.kubernetes.KubernetesMaster;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 
 /**
@@ -228,4 +230,82 @@ public interface CloudControllerService {
      */
     public void createClusterInstance (String serviceType, String clusterId, 
String alias, String instanceId) throws
             ClusterInstanceCreationException;
+    
+    /**
+     * Retrieves registered Kubernetes Groups.
+     */
+    public KubernetesGroup[] getAllKubernetesGroups();
+
+    /**
+     * Retrieves Kubernetes Group for given Kubernetes Group ID.
+     *
+     * @param kubernetesGroupId
+     */
+    public KubernetesGroup getKubernetesGroup(String kubernetesGroupId) throws 
NonExistingKubernetesGroupException;
+
+    /**
+     * Retrieves Kubernetes Master for given Kubernetes Group ID.
+     *
+     * @param kubernetesGroupId
+     */
+    public KubernetesMaster getMasterForKubernetesGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException;
+
+    /**
+     * Retrieves Kubernetes Hosts for given Kubernetes Group ID.
+     *
+     * @param kubernetesGroupId
+     */
+    public KubernetesHost[] getHostsForKubernetesGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException;
+
+    /**
+     * Register a Kubernetes cluster.
+     *
+     * @param kubernetesGroup
+     * @throws 
org.apache.stratos.autoscaler.exception.kubernetes.InvalidKubernetesGroupException
+     */
+    public boolean addKubernetesGroup(KubernetesGroup kubernetesGroup) throws 
InvalidKubernetesGroupException;
+
+    /**
+     * Add a Kubernetes host to a Kubernetes Group.
+     *
+     * @param groupId
+     * @param kubernetesHost
+     * @throws 
org.apache.stratos.autoscaler.exception.kubernetes.InvalidKubernetesHostException
+     */
+    public boolean addKubernetesHost(String groupId, KubernetesHost 
kubernetesHost) throws
+            InvalidKubernetesHostException, 
NonExistingKubernetesGroupException;
+
+    /**
+     * Update a Kubernetes host.
+     *
+     * @param kubernetesHost
+     * @throws InvalidKubernetesHostException
+     */
+    public boolean updateKubernetesHost(KubernetesHost kubernetesHost) throws
+            InvalidKubernetesHostException, NonExistingKubernetesHostException;
+
+    /**
+     * Remove a Kubernetes host.
+     *
+     * @param groupId
+     * @throws NonExistingKubernetesGroupException
+     */
+    public boolean removeKubernetesGroup(String groupId) throws 
NonExistingKubernetesGroupException;
+
+    /**
+     * Update a Kubernetes host.
+     *
+     * @param hostId
+     * @throws InvalidKubernetesHostException
+     */
+    public boolean removeKubernetesHost(String hostId) throws 
NonExistingKubernetesHostException;
+
+    /**
+     * Update a Kubernetes Master in a Kubernetes Group.
+     *
+     * @param kubernetesMaster
+     * @throws NonExistingKubernetesMasterException
+     */
+    public boolean updateKubernetesMaster(KubernetesMaster kubernetesMaster)
+            throws InvalidKubernetesMasterException, 
NonExistingKubernetesMasterException;
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index f165a00..53f28fa 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -49,6 +49,9 @@ import org.apache.stratos.cloud.controller.iaases.Iaas;
 import 
org.apache.stratos.cloud.controller.iaases.validators.PartitionValidator;
 import org.apache.stratos.common.*;
 import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.common.kubernetes.KubernetesGroup;
+import org.apache.stratos.common.kubernetes.KubernetesHost;
+import org.apache.stratos.common.kubernetes.KubernetesMaster;
 import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 import 
org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
 import org.apache.stratos.kubernetes.client.model.Label;
@@ -2049,6 +2052,221 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
         persist();
     }
+    
+    @Override
+    public KubernetesGroup[] getAllKubernetesGroups() {
+        return cloudControllerContext.getKubernetesGroups();
+    }
+
+    @Override
+    public KubernetesGroup getKubernetesGroup(String kubernetesGroupId) throws 
NonExistingKubernetesGroupException {
+        return cloudControllerContext.getKubernetesGroup(kubernetesGroupId);
+    }
+
+    @Override
+    public KubernetesMaster getMasterForKubernetesGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException {
+        return 
cloudControllerContext.getKubernetesMasterInGroup(kubernetesGroupId);
+    }
+
+    @Override
+    public KubernetesHost[] getHostsForKubernetesGroup(String 
kubernetesGroupId) throws NonExistingKubernetesGroupException {
+        return 
cloudControllerContext.getKubernetesHostsInGroup(kubernetesGroupId);
+    }
+
+
+    @Override
+    public boolean addKubernetesGroup(KubernetesGroup kubernetesGroup) throws 
InvalidKubernetesGroupException {
+        if (kubernetesGroup == null) {
+            throw new InvalidKubernetesGroupException("Kubernetes Group can 
not be null");
+        }
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Deploying new Kubernetes group: " + kubernetesGroup);
+        }
+        CloudControllerUtil.validateKubernetesGroup(kubernetesGroup);
+        try {
+            // Add to information model
+            
cloudControllerContext.addKubernetesGroupToInformationModel(kubernetesGroup);
+
+            persist();
+            
+            if (LOG.isInfoEnabled()) {
+                LOG.info(String.format("Kubernetes group deployed 
successfully: [id] %s, [description] %s",
+                        kubernetesGroup.getGroupId(), 
kubernetesGroup.getDescription()));
+            }
+            
+            return true;
+        } catch (Exception e) {
+            throw new InvalidKubernetesGroupException(e.getMessage(), e);
+        }
+    }
+    
+    @Override
+    public boolean addKubernetesHost(String kubernetesGroupId, KubernetesHost 
kubernetesHost) throws
+            InvalidKubernetesHostException, 
NonExistingKubernetesGroupException {
+        if (kubernetesHost == null) {
+            throw new InvalidKubernetesHostException("Kubernetes host can not 
be null");
+        }
+        if (StringUtils.isEmpty(kubernetesGroupId)) {
+            throw new NonExistingKubernetesGroupException("Kubernetes group id 
can not be null");
+        }
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Deploying new Kubernetes Host: " + kubernetesHost + " 
for Kubernetes group id: " + kubernetesGroupId);
+        }
+        CloudControllerUtil.validateKubernetesHost(kubernetesHost);
+        try {
+            KubernetesGroup kubernetesGroupStored = 
getKubernetesGroup(kubernetesGroupId);
+            ArrayList<KubernetesHost> kubernetesHostArrayList;
+
+            if (kubernetesGroupStored.getKubernetesHosts() == null) {
+                kubernetesHostArrayList = new ArrayList<KubernetesHost>();
+            } else {
+                if 
(cloudControllerContext.kubernetesHostExists(kubernetesHost.getHostId())) {
+                    throw new InvalidKubernetesHostException("Kubernetes host 
already exists: [id] " + kubernetesHost.getHostId());
+                }
+                kubernetesHostArrayList = new
+                        
ArrayList<KubernetesHost>(Arrays.asList(kubernetesGroupStored.getKubernetesHosts()));
+            }
+            kubernetesHostArrayList.add(kubernetesHost);
+
+            // Update information model
+            
kubernetesGroupStored.setKubernetesHosts(kubernetesHostArrayList.toArray(new 
KubernetesHost[kubernetesHostArrayList.size()]));
+
+            persist();
+            
+            if (LOG.isInfoEnabled()) {
+                LOG.info(String.format("Kubernetes host deployed successfully: 
[id] %s", kubernetesGroupStored.getGroupId()));
+            }
+            
+            return true;
+        } catch (Exception e) {
+            throw new InvalidKubernetesHostException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public boolean removeKubernetesGroup(String kubernetesGroupId) throws 
NonExistingKubernetesGroupException {
+        if (StringUtils.isEmpty(kubernetesGroupId)) {
+            throw new NonExistingKubernetesGroupException("Kubernetes group id 
can not be empty");
+        }
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Removing Kubernetes group: " + kubernetesGroupId);
+        }
+        try {
+            // Remove entry from information model
+            cloudControllerContext.removeKubernetesGroup(kubernetesGroupId);
+
+            if (LOG.isInfoEnabled()) {
+                LOG.info(String.format("Kubernetes group removed successfully: 
[id] %s", kubernetesGroupId));
+            }
+            
+            persist();
+            
+            return true;
+        } catch (Exception e) {
+            throw new NonExistingKubernetesGroupException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public boolean removeKubernetesHost(String kubernetesHostId) throws 
NonExistingKubernetesHostException {
+        if (kubernetesHostId == null) {
+            throw new NonExistingKubernetesHostException("Kubernetes host id 
can not be null");
+        }
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Removing Kubernetes Host: " + kubernetesHostId);
+        }
+        try {
+            KubernetesGroup kubernetesGroupStored = 
cloudControllerContext.getKubernetesGroupContainingHost(kubernetesHostId);
+
+            // Kubernetes master can not be removed
+            if 
(kubernetesGroupStored.getKubernetesMaster().getHostId().equals(kubernetesHostId))
 {
+                throw new NonExistingKubernetesHostException("Kubernetes 
master is not allowed to be removed [id] " + kubernetesHostId);
+            }
+
+            List<KubernetesHost> kubernetesHostList = new 
ArrayList<KubernetesHost>();
+            for (KubernetesHost kubernetesHost : 
kubernetesGroupStored.getKubernetesHosts()) {
+                if (!kubernetesHost.getHostId().equals(kubernetesHostId)) {
+                    kubernetesHostList.add(kubernetesHost);
+                }
+            }
+            // member count will be equal only when host object was not found
+            if (kubernetesHostList.size() == 
kubernetesGroupStored.getKubernetesHosts().length) {
+                throw new NonExistingKubernetesHostException("Kubernetes host 
not found for [id] " + kubernetesHostId);
+            }
+            KubernetesHost[] kubernetesHostsArray = new 
KubernetesHost[kubernetesHostList.size()];
+            kubernetesHostList.toArray(kubernetesHostsArray);
+
+            // Update information model
+            kubernetesGroupStored.setKubernetesHosts(kubernetesHostsArray);
+
+            if (LOG.isInfoEnabled()) {
+                LOG.info(String.format("Kubernetes host removed successfully: 
[id] %s", kubernetesHostId));
+            }
+            
+            persist();
+
+            return true;
+        } catch (Exception e) {
+            throw new NonExistingKubernetesHostException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public boolean updateKubernetesMaster(KubernetesMaster kubernetesMaster)
+            throws InvalidKubernetesMasterException, 
NonExistingKubernetesMasterException {
+        CloudControllerUtil.validateKubernetesMaster(kubernetesMaster);
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Updating Kubernetes master: " + kubernetesMaster);
+        }
+        try {
+            KubernetesGroup kubernetesGroupStored = 
cloudControllerContext.getKubernetesGroupContainingHost(kubernetesMaster.getHostId());
+
+            // Update information model
+            kubernetesGroupStored.setKubernetesMaster(kubernetesMaster);
+            
+            persist();
+
+            if (LOG.isInfoEnabled()) {
+                LOG.info(String.format("Kubernetes master updated 
successfully: [id] %s", kubernetesMaster.getHostId()));
+            }
+            
+            return true;
+        } catch (Exception e) {
+            throw new InvalidKubernetesMasterException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public boolean updateKubernetesHost(KubernetesHost kubernetesHost) throws
+            InvalidKubernetesHostException, NonExistingKubernetesHostException 
{
+        CloudControllerUtil.validateKubernetesHost(kubernetesHost);
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Updating Kubernetes Host: " + kubernetesHost);
+        }
+
+        try {
+            KubernetesGroup kubernetesGroupStored = 
cloudControllerContext.getKubernetesGroupContainingHost(kubernetesHost.getHostId());
+
+            for (int i = 0; i < 
kubernetesGroupStored.getKubernetesHosts().length; i++) {
+                if 
(kubernetesGroupStored.getKubernetesHosts()[i].getHostId().equals(kubernetesHost.getHostId()))
 {
+
+                    // Update the information model
+                    kubernetesGroupStored.getKubernetesHosts()[i] = 
kubernetesHost;
+
+                    if (LOG.isInfoEnabled()) {
+                        LOG.info(String.format("Kubernetes host updated 
successfully: [id] %s", kubernetesHost.getHostId()));
+                    }
+                    
+                    persist();
+
+                    return true;
+                }
+            }
+        } catch (Exception e) {
+            throw new InvalidKubernetesHostException(e.getMessage(), e);
+        }
+        throw new NonExistingKubernetesHostException("Kubernetes host not 
found [id] " + kubernetesHost.getHostId());
+    }
 
 //    public void deployApplicationDefinition (ApplicationContext 
applicationContext) throws ApplicationDefinitionException {
 //

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index ffebdf8..8e5e4d5 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -285,4 +285,10 @@ public final class CloudControllerConstants {
     public static final String NETWORK_IDS= "networkIds";
     
     public static final String IS_LOAD_BALANCER = "load.balancer";
+    
+    /**
+     * PortRange min max
+     */
+    public static final int PORT_RANGE_MAX = 65535;
+    public static final int PORT_RANGE_MIN = 1;
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/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 89131e3..e6c8d6f 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
@@ -18,6 +18,7 @@
  */
 package org.apache.stratos.cloud.controller.util;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -26,13 +27,21 @@ import 
org.apache.stratos.cloud.controller.context.CloudControllerContext;
 import org.apache.stratos.cloud.controller.domain.*;
 import org.apache.stratos.cloud.controller.exception.CloudControllerException;
 import 
org.apache.stratos.cloud.controller.exception.InvalidIaasProviderException;
+import 
org.apache.stratos.cloud.controller.exception.InvalidKubernetesGroupException;
+import 
org.apache.stratos.cloud.controller.exception.InvalidKubernetesHostException;
+import 
org.apache.stratos.cloud.controller.exception.InvalidKubernetesMasterException;
 import org.apache.stratos.cloud.controller.iaases.Iaas;
 import org.apache.stratos.cloud.controller.registry.Deserializer;
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
 import org.apache.stratos.common.Property;
+import org.apache.stratos.common.kubernetes.KubernetesGroup;
+import org.apache.stratos.common.kubernetes.KubernetesHost;
+import org.apache.stratos.common.kubernetes.KubernetesMaster;
 import org.apache.stratos.messaging.domain.topology.Topology;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
+import com.google.common.net.InetAddresses;
+
 import java.lang.reflect.Constructor;
 import java.util.Arrays;
 import java.util.ArrayList;
@@ -395,4 +404,107 @@ public class CloudControllerUtil {
                }
                return clusterId;
        }
+       
+       public static void validateKubernetesGroup(KubernetesGroup 
kubernetesGroup) throws InvalidKubernetesGroupException {
+        CloudControllerContext context = CloudControllerContext.getInstance();
+           
+           if (kubernetesGroup == null) {
+            throw new InvalidKubernetesGroupException("Kubernetes group can 
not be null");
+        }
+        if (StringUtils.isEmpty(kubernetesGroup.getGroupId())) {
+            throw new InvalidKubernetesGroupException("Kubernetes group 
groupId can not be empty");
+        }
+        if (context.kubernetesGroupExists(kubernetesGroup)) {
+            throw new 
InvalidKubernetesGroupException(String.format("Kubernetes group already exists 
" +
+                    "[id] %s", kubernetesGroup.getGroupId()));
+        }
+        if (kubernetesGroup.getKubernetesMaster() == null) {
+            throw new InvalidKubernetesGroupException("Mandatory field master 
has not been set " +
+                    "for the Kubernetes group [id] " + 
kubernetesGroup.getGroupId());
+        }
+        if (kubernetesGroup.getPortRange() == null) {
+            throw new InvalidKubernetesGroupException("Mandatory field 
portRange has not been set " +
+                    "for the Kubernetes group [id] " + 
kubernetesGroup.getGroupId());
+        }
+
+        // Port range validation
+        if (kubernetesGroup.getPortRange().getUpper() > 
CloudControllerConstants.PORT_RANGE_MAX ||
+                kubernetesGroup.getPortRange().getUpper() < 
CloudControllerConstants.PORT_RANGE_MIN ||
+                kubernetesGroup.getPortRange().getLower() > 
CloudControllerConstants.PORT_RANGE_MAX ||
+                kubernetesGroup.getPortRange().getLower() < 
CloudControllerConstants.PORT_RANGE_MIN ||
+                kubernetesGroup.getPortRange().getUpper() < 
kubernetesGroup.getPortRange().getLower()) {
+            throw new InvalidKubernetesGroupException("Port range is invalid " 
+
+                    "for the Kubernetes group [id]" + 
kubernetesGroup.getGroupId());
+        }
+        try {
+            validateKubernetesMaster(kubernetesGroup.getKubernetesMaster());
+            validateKubernetesHosts(kubernetesGroup.getKubernetesHosts());
+
+            // check whether master already exists
+            if 
(context.kubernetesHostExists(kubernetesGroup.getKubernetesMaster().getHostId()))
 {
+                throw new InvalidKubernetesGroupException("Kubernetes host 
already exists [id] " +
+                        kubernetesGroup.getKubernetesMaster().getHostId());
+            }
+
+            // Check for duplicate hostIds
+            if (kubernetesGroup.getKubernetesHosts() != null) {
+                List<String> hostIds = new ArrayList<String>();
+                hostIds.add(kubernetesGroup.getKubernetesMaster().getHostId());
+
+                for (KubernetesHost kubernetesHost : 
kubernetesGroup.getKubernetesHosts()) {
+                    if (hostIds.contains(kubernetesHost.getHostId())) {
+                        throw new InvalidKubernetesGroupException(
+                                String.format("Kubernetes host [id] %s already 
defined in the request", kubernetesHost.getHostId()));
+                    }
+
+                    // check whether host already exists
+                    if 
(context.kubernetesHostExists(kubernetesHost.getHostId())) {
+                        throw new InvalidKubernetesGroupException("Kubernetes 
host already exists [id] " +
+                                kubernetesHost.getHostId());
+                    }
+
+                    hostIds.add(kubernetesHost.getHostId());
+                }
+            }
+
+        } catch (InvalidKubernetesHostException e) {
+            throw new InvalidKubernetesGroupException(e.getMessage());
+        } catch (InvalidKubernetesMasterException e) {
+            throw new InvalidKubernetesGroupException(e.getMessage());
+        }
+    }
+       
+       private static void validateKubernetesHosts(KubernetesHost[] 
kubernetesHosts) throws InvalidKubernetesHostException {
+        if (kubernetesHosts == null || kubernetesHosts.length == 0) {
+            return;
+        }
+        for (KubernetesHost kubernetesHost : kubernetesHosts) {
+            validateKubernetesHost(kubernetesHost);
+        }
+    }
+
+    public static void validateKubernetesHost(KubernetesHost kubernetesHost) 
throws InvalidKubernetesHostException {
+        if (kubernetesHost == null) {
+            throw new InvalidKubernetesHostException("Kubernetes host can not 
be null");
+        }
+        if (StringUtils.isEmpty(kubernetesHost.getHostId())) {
+            throw new InvalidKubernetesHostException("Kubernetes host id can 
not be empty");
+        }
+        if (kubernetesHost.getHostIpAddress() == null) {
+            throw new InvalidKubernetesHostException("Mandatory field 
Kubernetes host IP address has not been set " +
+                    "for [hostId] " + kubernetesHost.getHostId());
+        }
+        if (!InetAddresses.isInetAddress(kubernetesHost.getHostIpAddress())) {
+            throw new InvalidKubernetesHostException("Kubernetes host ip 
address is invalid: " + kubernetesHost.getHostIpAddress());
+        }
+    }
+
+    public static void validateKubernetesMaster(KubernetesMaster 
kubernetesMaster) throws InvalidKubernetesMasterException {
+        try {
+            validateKubernetesHost(kubernetesMaster);
+        } catch (InvalidKubernetesHostException e) {
+            throw new InvalidKubernetesMasterException(e.getMessage());
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Properties.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Properties.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Properties.java
index 1b8ef93..f842672 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Properties.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/Properties.java
@@ -65,21 +65,44 @@ public class Properties implements Serializable {
     }
 
     @Override
-    public boolean equals(Object object) {
-        if (object == null) {
-            return false;
-        }
-
-        if (!(object instanceof Properties)) {
-            return false;
-        }
-
-        Properties propertiesObject = (Properties) object;
-        return Arrays.equals(propertiesObject.getProperties(), 
this.getProperties());
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((properties == null) ? 0 : 
properties.hashCode());
+        return result;
     }
 
     @Override
-    public int hashCode() {
-        return this.hashCode();
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        Properties other = (Properties) obj;
+        if (properties == null) {
+            if (other.properties != null)
+                return false;
+        } else if (!Arrays.equals(other.getProperties(), this.getProperties()))
+            return false;
+        return true;
     }
+
+//    @Override
+//    public boolean equals(Object object) {
+//        if (object == null) {
+//            return false;
+//        }
+//
+//        if (!(object instanceof Properties)) {
+//            return false;
+//        }
+//
+//        Properties propertiesObject = (Properties) object;
+//        return Arrays.equals(propertiesObject.getProperties(), 
this.getProperties());
+//    }
+    
+    
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesGroup.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesGroup.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesGroup.java
index 1244ab4..d7f54be 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesGroup.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesGroup.java
@@ -29,6 +29,7 @@ import java.util.Arrays;
  */
 public class KubernetesGroup implements Serializable {
 
+    private static final long serialVersionUID = 3210149484906093132L;
     private String groupId;
     private KubernetesHost[] kubernetesHosts;
     private KubernetesMaster kubernetesMaster;

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesHost.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesHost.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesHost.java
index 60baa12..49ed025 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesHost.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesHost.java
@@ -31,6 +31,7 @@ import java.io.Serializable;
  * The model class for KubernetesHost beans. This represents a Kubernetes 
CoreOS host instance
  */
 public class KubernetesHost implements Serializable {
+    private static final long serialVersionUID = 1798748592432690645L;
     private static final Log log = LogFactory.getLog(KubernetesHost.class);
     protected String hostId;
     protected String hostname;

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesMaster.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesMaster.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesMaster.java
index a8cbf8f..25badf2 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesMaster.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/KubernetesMaster.java
@@ -30,6 +30,8 @@ import java.io.Serializable;
  * The model class for KubernetesMaster beans. This represents a Kubernetes 
CoreOS master host instance
  */
 public class KubernetesMaster extends KubernetesHost implements Serializable {
+    private static final long serialVersionUID = -4369535909362724532L;
+
     private static final Log log = LogFactory.getLog(KubernetesMaster.class);
 
     private String endpoint;

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/PortRange.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/PortRange.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/PortRange.java
index 8225127..538c46a 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/PortRange.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/kubernetes/PortRange.java
@@ -25,6 +25,7 @@ import java.io.Serializable;
  * The model class for PortRange definition.
  */
 public class PortRange implements Serializable {
+    private static final long serialVersionUID = -8658155576745059779L;
     int upper;
     int lower;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java
index 86c8d01..78e5307 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java
@@ -32,14 +32,15 @@ import 
org.apache.stratos.cloud.controller.stub.domain.CartridgeConfig;
 import org.apache.stratos.cloud.controller.stub.domain.Registrant;
 import org.apache.stratos.cloud.controller.stub.domain.ServiceGroup;
 import org.apache.stratos.cloud.controller.stub.domain.Dependencies;
+import org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesGroup;
+import org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesHost;
+import org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesMaster;
 import org.apache.stratos.common.Properties;
-import org.apache.stratos.common.Property;
 import org.apache.stratos.manager.internal.DataHolder;
 import org.apache.stratos.manager.utils.ApplicationManagementUtil;
 import org.apache.stratos.manager.utils.CartridgeConstants;
 
 import java.rmi.RemoteException;
-import java.util.Iterator;
 
 public class CloudControllerServiceClient {
 
@@ -161,4 +162,57 @@ public class CloudControllerServiceClient {
 
         return stub.getClusterContext(clusterId);
     }
+    
+    public boolean deployKubernetesGroup(KubernetesGroup kubernetesGroup) 
throws RemoteException,
+            CloudControllerServiceInvalidKubernetesGroupExceptionException {
+        return stub.addKubernetesGroup(kubernetesGroup);
+    }
+
+    public boolean deployKubernetesHost(String kubernetesGroupId, 
KubernetesHost kubernetesHost)
+            throws RemoteException, 
CloudControllerServiceInvalidKubernetesHostExceptionException,
+            CloudControllerServiceNonExistingKubernetesGroupExceptionException 
{
+
+        return stub.addKubernetesHost(kubernetesGroupId, kubernetesHost);
+    }
+
+    public boolean updateKubernetesMaster(KubernetesMaster kubernetesMaster) 
throws RemoteException,
+            CloudControllerServiceInvalidKubernetesMasterExceptionException,
+            
CloudControllerServiceNonExistingKubernetesMasterExceptionException {
+        return stub.updateKubernetesMaster(kubernetesMaster);
+    }
+
+    public KubernetesGroup[] getAvailableKubernetesGroups() throws 
RemoteException {
+        return stub.getAllKubernetesGroups();
+    }
+
+    public KubernetesGroup getKubernetesGroup(String kubernetesGroupId) throws 
RemoteException,
+            CloudControllerServiceNonExistingKubernetesGroupExceptionException 
{
+        return stub.getKubernetesGroup(kubernetesGroupId);
+    }
+
+    public boolean undeployKubernetesGroup(String kubernetesGroupId) throws 
RemoteException,
+            CloudControllerServiceNonExistingKubernetesGroupExceptionException 
{
+        return stub.removeKubernetesGroup(kubernetesGroupId);
+    }
+
+    public boolean undeployKubernetesHost(String kubernetesHostId) throws 
RemoteException,
+            CloudControllerServiceNonExistingKubernetesHostExceptionException {
+        return stub.removeKubernetesHost(kubernetesHostId);
+    }
+
+    public KubernetesHost[] getKubernetesHosts(String kubernetesGroupId) 
throws RemoteException,
+            CloudControllerServiceNonExistingKubernetesGroupExceptionException 
{
+        return stub.getHostsForKubernetesGroup(kubernetesGroupId);
+    }
+
+    public KubernetesMaster getKubernetesMaster(String kubernetesGroupId) 
throws RemoteException,
+            CloudControllerServiceNonExistingKubernetesGroupExceptionException 
{
+        return stub.getMasterForKubernetesGroup(kubernetesGroupId);
+    }
+
+    public boolean updateKubernetesHost(KubernetesHost kubernetesHost) throws 
RemoteException,
+            CloudControllerServiceInvalidKubernetesHostExceptionException,
+            CloudControllerServiceNonExistingKubernetesHostExceptionException {
+        return stub.updateKubernetesHost(kubernetesHost);
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/98244f78/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 5e0c7bf..401d701 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -26,9 +26,16 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.stub.pojo.ApplicationContext;
 import org.apache.stratos.autoscaler.stub.*;
 import org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy;
+import 
org.apache.stratos.autoscaler.stub.exception.InvalidKubernetesGroupException;
 import org.apache.stratos.cloud.controller.stub.domain.CartridgeConfig;
 import org.apache.stratos.cloud.controller.stub.domain.CartridgeInfo;
 import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidKubernetesGroupExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidKubernetesHostExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidKubernetesMasterExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceNonExistingKubernetesGroupExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceNonExistingKubernetesHostExceptionException;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceNonExistingKubernetesMasterExceptionException;
 import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
 import org.apache.stratos.common.Property;
 import org.apache.stratos.manager.client.AutoscalerServiceClient;
@@ -1618,17 +1625,17 @@ public class StratosApiV41Utils {
 
     public static boolean deployKubernetesGroup(KubernetesGroup 
kubernetesGroupBean) throws RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
-            org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup 
kubernetesGroup =
-                    
PojoConverter.convertToASKubernetesGroupPojo(kubernetesGroupBean);
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
+            
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesGroup 
kubernetesGroup =
+                    
PojoConverter.convertToCCKubernetesGroupPojo(kubernetesGroupBean);
 
             try {
-                return 
autoscalerServiceClient.deployKubernetesGroup(kubernetesGroup);
+                return 
cloudControllerServiceClient.deployKubernetesGroup(kubernetesGroup);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch (AutoScalerServiceInvalidKubernetesGroupExceptionException 
e) {
+            } catch 
(CloudControllerServiceInvalidKubernetesGroupExceptionException e) {
                 String message = 
e.getFaultMessage().getInvalidKubernetesGroupException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1640,21 +1647,21 @@ public class StratosApiV41Utils {
     public static boolean deployKubernetesHost(String kubernetesGroupId, 
KubernetesHost kubernetesHostBean)
             throws RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
-            org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost 
kubernetesHost =
-                    
PojoConverter.convertToASKubernetesHostPojo(kubernetesHostBean);
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
+            org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesHost 
kubernetesHost =
+                    
PojoConverter.convertToCCKubernetesHostPojo(kubernetesHostBean);
 
             try {
-                return 
autoscalerServiceClient.deployKubernetesHost(kubernetesGroupId, kubernetesHost);
+                return 
cloudControllerServiceClient.deployKubernetesHost(kubernetesGroupId, 
kubernetesHost);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch (AutoScalerServiceInvalidKubernetesHostExceptionException 
e) {
+            } catch 
(CloudControllerServiceInvalidKubernetesHostExceptionException e) {
                 String message = 
e.getFaultMessage().getInvalidKubernetesHostException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesGroupExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesGroupExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesGroupException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1665,21 +1672,21 @@ public class StratosApiV41Utils {
 
     public static boolean updateKubernetesMaster(KubernetesMaster 
kubernetesMasterBean) throws RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
-            org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster 
kubernetesMaster =
-                    
PojoConverter.convertToASKubernetesMasterPojo(kubernetesMasterBean);
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
+            
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesMaster 
kubernetesMaster =
+                    
PojoConverter.convertToCCKubernetesMasterPojo(kubernetesMasterBean);
 
             try {
-                return 
autoscalerServiceClient.updateKubernetesMaster(kubernetesMaster);
+                return 
cloudControllerServiceClient.updateKubernetesMaster(kubernetesMaster);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch 
(AutoScalerServiceInvalidKubernetesMasterExceptionException e) {
+            } catch 
(CloudControllerServiceInvalidKubernetesMasterExceptionException e) {
                 String message = 
e.getFaultMessage().getInvalidKubernetesMasterException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesMasterExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesMasterExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesMasterException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1690,11 +1697,11 @@ public class StratosApiV41Utils {
 
     public static KubernetesGroup[] getAvailableKubernetesGroups() throws 
RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
             try {
-                org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup[]
-                        kubernetesGroups = 
autoscalerServiceClient.getAvailableKubernetesGroups();
+                
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesGroup[]
+                        kubernetesGroups = 
cloudControllerServiceClient.getAvailableKubernetesGroups();
                 return 
PojoConverter.populateKubernetesGroupsPojo(kubernetesGroups);
 
             } catch (RemoteException e) {
@@ -1707,17 +1714,17 @@ public class StratosApiV41Utils {
 
     public static KubernetesGroup getKubernetesGroup(String kubernetesGroupId) 
throws RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
             try {
-                org.apache.stratos.autoscaler.stub.kubernetes.KubernetesGroup
-                        kubernetesGroup = 
autoscalerServiceClient.getKubernetesGroup(kubernetesGroupId);
+                
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesGroup
+                        kubernetesGroup = 
cloudControllerServiceClient.getKubernetesGroup(kubernetesGroupId);
                 return 
PojoConverter.populateKubernetesGroupPojo(kubernetesGroup);
 
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesGroupExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesGroupExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesGroupException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1766,11 +1773,11 @@ public class StratosApiV41Utils {
 
     public static KubernetesHost[] getKubernetesHosts(String 
kubernetesGroupId) throws RestAPIException {
 
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
             try {
-                org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost[]
-                        kubernetesHosts = 
autoscalerServiceClient.getKubernetesHosts(kubernetesGroupId);
+                
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesHost[]
+                        kubernetesHosts = 
cloudControllerServiceClient.getKubernetesHosts(kubernetesGroupId);
 
                 List<KubernetesHost> arrayList = 
PojoConverter.populateKubernetesHostsPojo(kubernetesHosts);
                 KubernetesHost[] array = new KubernetesHost[arrayList.size()];
@@ -1779,7 +1786,7 @@ public class StratosApiV41Utils {
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesGroupExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesGroupExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesGroupException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1789,17 +1796,17 @@ public class StratosApiV41Utils {
     }
 
     public static KubernetesMaster getKubernetesMaster(String 
kubernetesGroupId) throws RestAPIException {
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
             try {
-                org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster
-                        kubernetesMaster = 
autoscalerServiceClient.getKubernetesMaster(kubernetesGroupId);
+                
org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesMaster
+                        kubernetesMaster = 
cloudControllerServiceClient.getKubernetesMaster(kubernetesGroupId);
                 return 
PojoConverter.populateKubernetesMasterPojo(kubernetesMaster);
 
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesGroupExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesGroupExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesGroupException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
@@ -1809,20 +1816,20 @@ public class StratosApiV41Utils {
     }
 
     public static boolean updateKubernetesHost(KubernetesHost 
kubernetesHostBean) throws RestAPIException {
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
-            org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost 
kubernetesHost =
-                    
PojoConverter.convertToASKubernetesHostPojo(kubernetesHostBean);
+        CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
+        if (cloudControllerServiceClient != null) {
+            org.apache.stratos.cloud.controller.stub.kubernetes.KubernetesHost 
kubernetesHost =
+                    
PojoConverter.convertToCCKubernetesHostPojo(kubernetesHostBean);
             try {
-                return 
autoscalerServiceClient.updateKubernetesHost(kubernetesHost);
+                return 
cloudControllerServiceClient.updateKubernetesHost(kubernetesHost);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
-            } catch (AutoScalerServiceInvalidKubernetesHostExceptionException 
e) {
+            } catch 
(CloudControllerServiceInvalidKubernetesHostExceptionException e) {
                 String message = 
e.getFaultMessage().getInvalidKubernetesHostException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);
-            } catch 
(AutoScalerServiceNonExistingKubernetesHostExceptionException e) {
+            } catch 
(CloudControllerServiceNonExistingKubernetesHostExceptionException e) {
                 String message = 
e.getFaultMessage().getNonExistingKubernetesHostException().getMessage();
                 log.error(message, e);
                 throw new RestAPIException(message, e);

Reply via email to