Refactoring functions to convert a MemberContext and adding a new function to 
convert a Member context to a Service.


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

Branch: refs/heads/docker-integration
Commit: 39d161e11c5cb0f842660af9102606772cad6076
Parents: f44689a
Author: Nirmal Fernando <[email protected]>
Authored: Sat Sep 13 20:28:46 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sat Sep 13 20:28:46 2014 +0530

----------------------------------------------------------------------
 .../ClusterContextToKubernetesContainer.java    | 131 -------------------
 .../ClusterContextToReplicationController.java  |  77 -----------
 .../MemberContextToKubernetesContainer.java     | 131 +++++++++++++++++++
 .../MemberContextToKubernetesService.java       |  61 +++++++++
 .../MemberContextToReplicationController.java   |  77 +++++++++++
 5 files changed, 269 insertions(+), 208 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/39d161e1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToKubernetesContainer.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToKubernetesContainer.java
deleted file mode 100644
index a38f5d6..0000000
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToKubernetesContainer.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.functions;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cloud.controller.pojo.Cartridge;
-import org.apache.stratos.cloud.controller.pojo.ClusterContext;
-import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
-import org.apache.stratos.cloud.controller.pojo.PortMapping;
-import org.apache.stratos.cloud.controller.pojo.Property;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.kubernetes.client.model.Container;
-import org.apache.stratos.kubernetes.client.model.EnvironmentVariable;
-import org.apache.stratos.kubernetes.client.model.Port;
-
-import com.google.common.base.Function;
-
-/**
- *     Is responsible for converting a {@link ClusterContext} object to a 
Kubernetes {@link Container}
- *     Object.
- */
-public class ClusterContextToKubernetesContainer implements 
Function<ClusterContext, Container>{
-       
-       private static final Log log = 
LogFactory.getLog(ClusterContextToKubernetesContainer.class);
-       private FasterLookUpDataHolder dataHolder = 
FasterLookUpDataHolder.getInstance();
-
-       @Override
-       public Container apply(ClusterContext clusterContext) {
-               Container container = new Container();
-               container.setName(clusterContext.getHostName());
-
-               Cartridge cartridge = dataHolder.getCartridge(clusterContext
-                               .getCartridgeType());
-               
-               if (cartridge == null) {
-                       log.error("Cannot find a Cartridge of type : "
-                                       + clusterContext.getCartridgeType());
-                       return null;
-               }
-               
-               container.setImage(cartridge.getContainer().getImageName());
-
-               container.setPorts(getPorts(clusterContext, cartridge));
-
-               return container;
-       }
-       
-       private Port[] getPorts(ClusterContext ctxt, Cartridge cartridge) {
-               String kubernetesClusterId = 
CloudControllerUtil.getProperty(ctxt.getProperties(), 
-                       StratosConstants.KUBERNETES_CLUSTER_ID);
-               KubernetesClusterContext kubClusterContext = 
dataHolder.getKubernetesClusterContext(kubernetesClusterId);
-               Port[] ports = new Port[cartridge.getPortMappings().size()];
-               List<Port> portList = new ArrayList<Port>();
-               
-               for (PortMapping portMapping : cartridge.getPortMappings()) {
-                       Port p = new Port();
-                       
p.setContainerPort(Integer.parseInt(portMapping.getPort()));
-                       
p.setHostPort(kubClusterContext.getAnAvailableHostPort());
-                       p.setProtocol(portMapping.getProtocol());
-                       p.setName(p.getProtocol()+p.getContainerPort());
-                       portList.add(p);
-               }
-               
-               return portList.toArray(ports);
-       }
-       
-       private String generateMemberId(String clusterId) {
-        UUID memberId = UUID.randomUUID();
-         return clusterId + memberId.toString();
-    }
-       
-       private EnvironmentVariable[] getEnvironmentVars(ClusterContext ctxt, 
Cartridge cartridge) {
-               
-               String kubernetesClusterId = 
CloudControllerUtil.getProperty(ctxt.getProperties(), 
-                       StratosConstants.KUBERNETES_CLUSTER_ID);
-               
-               List<EnvironmentVariable> envVars = new 
ArrayList<EnvironmentVariable>();
-               
-               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
-               addToEnvironment(envVars, StratosConstants.LB_CLUSTER_ID, 
generateMemberId(ctxt.getClusterId()));
-               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
-               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
-               // have to add memberID to the payload
-        StringBuilder payload = new StringBuilder(ctxt.getPayload());
-        addToPayload(payload, "MEMBER_ID", memberID);
-        addToPayload(payload, "LB_CLUSTER_ID", memberContext.getLbClusterId());
-        addToPayload(payload, "NETWORK_PARTITION_ID", 
memberContext.getNetworkPartitionId());
-        addToPayload(payload, StratosConstants.KUBERNETES_CLUSTER_ID, 
kubernetesClusterId);
-        if(memberContext.getProperties() != null) {
-               org.apache.stratos.cloud.controller.pojo.Properties props1 = 
memberContext.getProperties();
-            if (props1 != null) {
-                for (Property prop : props1.getProperties()) {
-                    addToPayload(payload, prop.getName(), prop.getValue());
-                }
-            }
-        }
-       }
-
-       private void addToEnvironment(List<EnvironmentVariable> envVars,
-                       String name, String value) {
-
-               EnvironmentVariable var = new EnvironmentVariable();
-               var.setName(name);
-               var.setValue(value);
-               envVars.add(var);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/39d161e1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToReplicationController.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToReplicationController.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToReplicationController.java
deleted file mode 100644
index 36141f2..0000000
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ClusterContextToReplicationController.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.functions;
-
-import org.apache.stratos.cloud.controller.pojo.ClusterContext;
-import org.apache.stratos.kubernetes.client.model.Container;
-import org.apache.stratos.kubernetes.client.model.Label;
-import org.apache.stratos.kubernetes.client.model.Manifest;
-import org.apache.stratos.kubernetes.client.model.Pod;
-import org.apache.stratos.kubernetes.client.model.ReplicationController;
-import org.apache.stratos.kubernetes.client.model.Selector;
-import org.apache.stratos.kubernetes.client.model.State;
-
-import com.google.common.base.Function;
-
-/**
- *     Is responsible for converting a {@link ClusterContext} object to a 
Kubernetes {@link ReplicationController}
- *     Object.
- */
-public class ClusterContextToReplicationController implements 
Function<ClusterContext, ReplicationController>{
-
-       @Override
-       public ReplicationController apply(ClusterContext clusterContext) {
-               ReplicationController contr = new ReplicationController();
-               contr.setId(clusterContext.getClusterId());
-               contr.setKind("ReplicationController");
-               contr.setApiVersion("v1beta1");
-               State desiredState = new State();
-               desiredState.setReplicas(3);
-               Selector selector = new Selector();
-               selector.setName(clusterContext.getClusterId());
-               desiredState.setReplicaSelector(selector);
-
-               Pod podTemplate = new Pod();
-               State podState = new State();
-               Manifest manifest = new Manifest();
-               manifest.setVersion("v1beta1");
-               manifest.setId(clusterContext.getClusterId());
-
-               ClusterContextToKubernetesContainer containerFunc = new 
ClusterContextToKubernetesContainer();
-               Container container = containerFunc.apply(clusterContext);
-
-               manifest.setContainers(new Container[] { container });
-
-               podState.setManifest(manifest);
-               podTemplate.setDesiredState(podState);
-               Label l1 = new Label();
-               l1.setName(clusterContext.getClusterId());
-               podTemplate.setLabels(l1);
-
-               desiredState.setPodTemplate(podTemplate);
-               contr.setDesiredState(desiredState);
-
-               Label l2 = new Label();
-               l2.setName(clusterContext.getClusterId());
-               contr.setLabels(l2);
-
-               return contr;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/39d161e1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
new file mode 100644
index 0000000..a38f5d6
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
@@ -0,0 +1,131 @@
+/*
+ * 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.functions;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.pojo.Cartridge;
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
+import org.apache.stratos.cloud.controller.pojo.PortMapping;
+import org.apache.stratos.cloud.controller.pojo.Property;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.kubernetes.client.model.Container;
+import org.apache.stratos.kubernetes.client.model.EnvironmentVariable;
+import org.apache.stratos.kubernetes.client.model.Port;
+
+import com.google.common.base.Function;
+
+/**
+ *     Is responsible for converting a {@link ClusterContext} object to a 
Kubernetes {@link Container}
+ *     Object.
+ */
+public class ClusterContextToKubernetesContainer implements 
Function<ClusterContext, Container>{
+       
+       private static final Log log = 
LogFactory.getLog(ClusterContextToKubernetesContainer.class);
+       private FasterLookUpDataHolder dataHolder = 
FasterLookUpDataHolder.getInstance();
+
+       @Override
+       public Container apply(ClusterContext clusterContext) {
+               Container container = new Container();
+               container.setName(clusterContext.getHostName());
+
+               Cartridge cartridge = dataHolder.getCartridge(clusterContext
+                               .getCartridgeType());
+               
+               if (cartridge == null) {
+                       log.error("Cannot find a Cartridge of type : "
+                                       + clusterContext.getCartridgeType());
+                       return null;
+               }
+               
+               container.setImage(cartridge.getContainer().getImageName());
+
+               container.setPorts(getPorts(clusterContext, cartridge));
+
+               return container;
+       }
+       
+       private Port[] getPorts(ClusterContext ctxt, Cartridge cartridge) {
+               String kubernetesClusterId = 
CloudControllerUtil.getProperty(ctxt.getProperties(), 
+                       StratosConstants.KUBERNETES_CLUSTER_ID);
+               KubernetesClusterContext kubClusterContext = 
dataHolder.getKubernetesClusterContext(kubernetesClusterId);
+               Port[] ports = new Port[cartridge.getPortMappings().size()];
+               List<Port> portList = new ArrayList<Port>();
+               
+               for (PortMapping portMapping : cartridge.getPortMappings()) {
+                       Port p = new Port();
+                       
p.setContainerPort(Integer.parseInt(portMapping.getPort()));
+                       
p.setHostPort(kubClusterContext.getAnAvailableHostPort());
+                       p.setProtocol(portMapping.getProtocol());
+                       p.setName(p.getProtocol()+p.getContainerPort());
+                       portList.add(p);
+               }
+               
+               return portList.toArray(ports);
+       }
+       
+       private String generateMemberId(String clusterId) {
+        UUID memberId = UUID.randomUUID();
+         return clusterId + memberId.toString();
+    }
+       
+       private EnvironmentVariable[] getEnvironmentVars(ClusterContext ctxt, 
Cartridge cartridge) {
+               
+               String kubernetesClusterId = 
CloudControllerUtil.getProperty(ctxt.getProperties(), 
+                       StratosConstants.KUBERNETES_CLUSTER_ID);
+               
+               List<EnvironmentVariable> envVars = new 
ArrayList<EnvironmentVariable>();
+               
+               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
+               addToEnvironment(envVars, StratosConstants.LB_CLUSTER_ID, 
generateMemberId(ctxt.getClusterId()));
+               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
+               addToEnvironment(envVars, StratosConstants.MEMBER_ID, 
generateMemberId(ctxt.getClusterId()));
+               // have to add memberID to the payload
+        StringBuilder payload = new StringBuilder(ctxt.getPayload());
+        addToPayload(payload, "MEMBER_ID", memberID);
+        addToPayload(payload, "LB_CLUSTER_ID", memberContext.getLbClusterId());
+        addToPayload(payload, "NETWORK_PARTITION_ID", 
memberContext.getNetworkPartitionId());
+        addToPayload(payload, StratosConstants.KUBERNETES_CLUSTER_ID, 
kubernetesClusterId);
+        if(memberContext.getProperties() != null) {
+               org.apache.stratos.cloud.controller.pojo.Properties props1 = 
memberContext.getProperties();
+            if (props1 != null) {
+                for (Property prop : props1.getProperties()) {
+                    addToPayload(payload, prop.getName(), prop.getValue());
+                }
+            }
+        }
+       }
+
+       private void addToEnvironment(List<EnvironmentVariable> envVars,
+                       String name, String value) {
+
+               EnvironmentVariable var = new EnvironmentVariable();
+               var.setName(name);
+               var.setValue(value);
+               envVars.add(var);
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/39d161e1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
new file mode 100644
index 0000000..79326ce
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
@@ -0,0 +1,61 @@
+/*
+ * 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.functions;
+
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.kubernetes.client.model.Selector;
+import org.apache.stratos.kubernetes.client.model.Service;
+import com.google.common.base.Function;
+
+/**
+ *     Is responsible for converting a {@link MemberContext} object to a 
Kubernetes {@link Service}
+ *     Object.
+ */
+public class MemberContextToKubernetesService implements 
Function<MemberContext, Service>{
+
+       private FasterLookUpDataHolder dataHolder = 
FasterLookUpDataHolder.getInstance();
+       
+       @Override
+       public Service apply(MemberContext memberContext) {
+               
+               String clusterId = memberContext.getClusterId();
+        ClusterContext clusterContext = 
dataHolder.getClusterContext(clusterId);
+        
+               String kubernetesClusterId = 
CloudControllerUtil.getProperty(clusterContext.getProperties(), 
+               StratosConstants.KUBERNETES_CLUSTER_ID);
+               KubernetesClusterContext kubClusterContext = 
dataHolder.getKubernetesClusterContext(kubernetesClusterId);
+        
+        Service service = new Service();
+        service.setApiVersion("v1beta1");
+        service.setId(clusterId);
+        service.setKind("Service");
+        service.setPort(kubClusterContext.getAnAvailableHostPort());
+        Selector selector = new Selector();
+        selector.setName(clusterId);
+        service.setSelector(selector);
+        
+               return service;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/39d161e1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
new file mode 100644
index 0000000..36141f2
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
@@ -0,0 +1,77 @@
+/*
+ * 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.functions;
+
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.kubernetes.client.model.Container;
+import org.apache.stratos.kubernetes.client.model.Label;
+import org.apache.stratos.kubernetes.client.model.Manifest;
+import org.apache.stratos.kubernetes.client.model.Pod;
+import org.apache.stratos.kubernetes.client.model.ReplicationController;
+import org.apache.stratos.kubernetes.client.model.Selector;
+import org.apache.stratos.kubernetes.client.model.State;
+
+import com.google.common.base.Function;
+
+/**
+ *     Is responsible for converting a {@link ClusterContext} object to a 
Kubernetes {@link ReplicationController}
+ *     Object.
+ */
+public class ClusterContextToReplicationController implements 
Function<ClusterContext, ReplicationController>{
+
+       @Override
+       public ReplicationController apply(ClusterContext clusterContext) {
+               ReplicationController contr = new ReplicationController();
+               contr.setId(clusterContext.getClusterId());
+               contr.setKind("ReplicationController");
+               contr.setApiVersion("v1beta1");
+               State desiredState = new State();
+               desiredState.setReplicas(3);
+               Selector selector = new Selector();
+               selector.setName(clusterContext.getClusterId());
+               desiredState.setReplicaSelector(selector);
+
+               Pod podTemplate = new Pod();
+               State podState = new State();
+               Manifest manifest = new Manifest();
+               manifest.setVersion("v1beta1");
+               manifest.setId(clusterContext.getClusterId());
+
+               ClusterContextToKubernetesContainer containerFunc = new 
ClusterContextToKubernetesContainer();
+               Container container = containerFunc.apply(clusterContext);
+
+               manifest.setContainers(new Container[] { container });
+
+               podState.setManifest(manifest);
+               podTemplate.setDesiredState(podState);
+               Label l1 = new Label();
+               l1.setName(clusterContext.getClusterId());
+               podTemplate.setLabels(l1);
+
+               desiredState.setPodTemplate(podTemplate);
+               contr.setDesiredState(desiredState);
+
+               Label l2 = new Label();
+               l2.setName(clusterContext.getClusterId());
+               contr.setLabels(l2);
+
+               return contr;
+       }
+
+}

Reply via email to