Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x d9fb5f014 -> 3af354cf0


Fixing memory allocation limit in kubernetes and allowing users to specify cpu 
and memory with units


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

Branch: refs/heads/stratos-4.1.x
Commit: 3af354cf037b27c235e743d311ec141dd505471a
Parents: d9fb5f0
Author: Imesh Gunaratne <[email protected]>
Authored: Wed Sep 9 16:54:43 2015 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Wed Sep 9 16:54:43 2015 +0530

----------------------------------------------------------------------
 .../cloud/controller/domain/InstanceMetadata.java       | 12 ++++++------
 .../stratos/cloud/controller/iaases/JcloudsIaas.java    |  2 +-
 .../controller/iaases/kubernetes/KubernetesIaas.java    |  8 ++++----
 .../stratos/kubernetes/client/KubernetesApiClient.java  | 12 ++++++------
 .../client/interfaces/KubernetesAPIClientInterface.java |  2 +-
 .../kubernetes/client/live/AbstractLiveTest.java        |  7 +++----
 .../client/live/KubernetesApiClientLiveTest.java        |  8 ++++----
 7 files changed, 25 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/InstanceMetadata.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/InstanceMetadata.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/InstanceMetadata.java
index 02022af..9ff171f 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/InstanceMetadata.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/InstanceMetadata.java
@@ -30,8 +30,8 @@ public class InstanceMetadata implements Serializable {
 
     private String hostname;
     private String hypervisor;
-    private int cpu;
-    private int ram;
+    private String cpu;
+    private String ram;
     private String imageId;
     private int loginPort;
     private String operatingSystemName;
@@ -55,11 +55,11 @@ public class InstanceMetadata implements Serializable {
         this.hypervisor = hypervisor;
     }
 
-    public int getRam() {
+    public String getRam() {
         return ram;
     }
 
-    public void setRam(int ram) {
+    public void setRam(String ram) {
         this.ram = ram;
     }
 
@@ -111,11 +111,11 @@ public class InstanceMetadata implements Serializable {
         this.operatingSystem64bit = operatingSystem64bit;
     }
 
-    public void setCpu(int cpu) {
+    public void setCpu(String cpu) {
         this.cpu = cpu;
     }
 
-    public int getCpu() {
+    public String getCpu() {
         return cpu;
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
index fbd5fc1..562ae81 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/JcloudsIaas.java
@@ -158,7 +158,7 @@ public abstract class JcloudsIaas extends Iaas {
         instanceMetadata.setLoginPort(nodeMetadata.getLoginPort());
         if (nodeMetadata.getHardware() != null) {
             
instanceMetadata.setHypervisor(nodeMetadata.getHardware().getHypervisor());
-            instanceMetadata.setRam(nodeMetadata.getHardware().getRam());
+            
instanceMetadata.setRam(String.valueOf(nodeMetadata.getHardware().getRam()));
         }
         if (nodeMetadata.getOperatingSystem() != null) {
             
instanceMetadata.setOperatingSystemName(nodeMetadata.getOperatingSystem().getName());

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/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 fa1a9b3..8d81ceb 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
@@ -384,15 +384,15 @@ public class KubernetesIaas extends Iaas {
         }
 
         // Set default values to zero to avoid cpu and memory restrictions
-        int cpu = Integer.getInteger(KUBERNETES_CONTAINER_CPU_DEFAULT, 0);
-        int memory = Integer.getInteger(KUBERNETES_CONTAINER_MEMORY_DEFAULT, 
0);
+        String cpu = System.getProperty(KUBERNETES_CONTAINER_CPU_DEFAULT, "0");
+        String memory = 
System.getProperty(KUBERNETES_CONTAINER_MEMORY_DEFAULT, "0");
         Property cpuProperty = 
cartridge.getProperties().getProperty(KUBERNETES_CONTAINER_CPU);
         if (cpuProperty != null) {
-            cpu = Integer.parseInt(cpuProperty.getValue());
+            cpu = cpuProperty.getValue();
         }
         Property memoryProperty = 
cartridge.getProperties().getProperty(KUBERNETES_CONTAINER_MEMORY);
         if (memoryProperty != null) {
-            memory = Integer.parseInt(memoryProperty.getValue());
+            memory = memoryProperty.getValue();
         }
 
         IaasProvider iaasProvider = 
CloudControllerContext.getInstance().getIaasProviderOfPartition(cartridge.getType(),
 partition.getId());

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/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 cfdaf77..7dffd60 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
@@ -55,16 +55,16 @@ public class KubernetesApiClient implements 
KubernetesAPIClientInterface {
      * @throws KubernetesClientException
      */
     @Override
-    public void createPod(String podId, String podLabel, String dockerImage, 
int cpu, int memory, List<ContainerPort> ports,
+    public void createPod(String podId, String podLabel, String dockerImage, 
String cpu, String memory, List<ContainerPort> ports,
                           List<EnvVar> environmentVariables)
             throws KubernetesClientException {
 
         try {
-            int memoryInMB = 1024 * 1024 * memory;
+
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Creating kubernetes pod: [pod-id] %s 
[pod-name] %s [docker-image] %s " +
-                                "[cpu] %d [memory] %d MB [ports] %s",
-                        podId, podLabel, dockerImage, cpu, memoryInMB, ports));
+                                "[cpu] %s [memory] %s [ports] %s",
+                        podId, podLabel, dockerImage, cpu, memory, ports));
             }
 
             // Create pod definition
@@ -93,8 +93,8 @@ public class KubernetesApiClient implements 
KubernetesAPIClientInterface {
             // Set resource limits
             ResourceRequirements resources = new ResourceRequirements();
             Map<String, Quantity> limits = new HashMap<String, Quantity>();
-            limits.put(KubernetesConstants.RESOURCE_CPU, new 
Quantity(String.valueOf(cpu)));
-            limits.put(KubernetesConstants.RESOURCE_MEMORY, new 
Quantity(String.valueOf(memoryInMB)));
+            limits.put(KubernetesConstants.RESOURCE_CPU, new Quantity(cpu));
+            limits.put(KubernetesConstants.RESOURCE_MEMORY, new 
Quantity(memory));
             resources.setLimits(limits);
             containerTemplate.setResources(resources);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/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 ceeca1c..dd980fe 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
@@ -42,7 +42,7 @@ public interface KubernetesAPIClientInterface {
      * @param environmentVariables environment variables
      * @throws KubernetesClientException
      */
-    public void createPod(String podId, String podLabel, String dockerImage, 
int cpu, int memory,
+    public void createPod(String podId, String podLabel, String dockerImage, 
String cpu, String memory,
                           List<ContainerPort> ports, List<EnvVar> 
environmentVariables)
             throws KubernetesClientException;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/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 0ee580d..2fc2cc43 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,7 +124,7 @@ public class AbstractLiveTest extends TestCase {
         log.info("Kubernetes resources cleaned");
     }
 
-    protected void createPod(String podId, String podName, String 
containerPortName, int cpu, int memory)
+    protected void createPod(String podId, String podName, String 
containerPortName, String cpu, String memory)
             throws KubernetesClientException {
 
         log.info("Creating pod: [pod] " + podId);
@@ -141,11 +141,10 @@ public class AbstractLiveTest extends TestCase {
         assertEquals(1, containers.size());
 
         Map<String, Quantity> limits = 
containers.get(0).getResources().getLimits();
-        int memoryInMb = memory * 1024 * 1024;
 
         log.info("Verifying container resource limits...");
-        assertEquals(String.valueOf(cpu), 
limits.get(KubernetesConstants.RESOURCE_CPU).getAmount());
-        assertEquals(String.valueOf(memoryInMb), 
limits.get(KubernetesConstants.RESOURCE_MEMORY).getAmount());
+        assertEquals(cpu, 
limits.get(KubernetesConstants.RESOURCE_CPU).getAmount());
+        assertEquals(memory, 
limits.get(KubernetesConstants.RESOURCE_MEMORY).getAmount());
         log.info("Container resource limits verified successfully");
 
         if (testPodActivation) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/3af354cf/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 79c32a7..c7ae1da 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
@@ -48,8 +48,8 @@ public class KubernetesApiClientLiveTest extends 
AbstractLiveTest {
     public void testPodCreation() throws Exception {
         log.info("Testing pod creation...");
 
-        createPod("stratos-test-pod-1", "stratos-test-pod", "http-1", 1, 512);
-        createPod("stratos-test-pod-2", "stratos-test-pod", "http-1", 2, 512);
+        createPod("stratos-test-pod-1", "stratos-test-pod", "http-1", "1", 
"512Mi");
+        createPod("stratos-test-pod-2", "stratos-test-pod", "http-1", "2", 
"4Gi");
 
         deletePod("stratos-test-pod-1");
         deletePod("stratos-test-pod-2");
@@ -75,8 +75,8 @@ public class KubernetesApiClientLiveTest extends 
AbstractLiveTest {
 
         createService(serviceId, serviceName, SERVICE_PORT, serviceType, 
containerPortName, containerPort, minionPublicIPs);
 
-        createPod("stratos-test-pod-3", serviceName, containerPortName, 1, 
512);
-        createPod("stratos-test-pod-4", serviceName, containerPortName, 2, 
512);
+        createPod("stratos-test-pod-3", serviceName, containerPortName, "1", 
"512");
+        createPod("stratos-test-pod-4", serviceName, containerPortName, "2", 
"512");
 
         if (testServiceSocket) {
             // test service accessibility

Reply via email to