Update the LVSConfigWriter class

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

Branch: refs/heads/master
Commit: caed60c74ede0ea19f1b8e94950bbef227b10d69
Parents: edc8cf7
Author: Gayan Gunarathne <[email protected]>
Authored: Thu Jun 25 18:52:16 2015 +0530
Committer: Gayan Gunarathne <[email protected]>
Committed: Mon Jul 27 15:02:02 2015 +0530

----------------------------------------------------------------------
 .../stratos/lvs/extension/LVSConfigWriter.java  | 33 +++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/caed60c7/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java
 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java
index 08edaf1..dcf2910 100644
--- 
a/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java
+++ 
b/extensions/load-balancer/lvs-extension/src/main/java/org/apache/stratos/lvs/extension/LVSConfigWriter.java
@@ -21,6 +21,7 @@ package org.apache.stratos.lvs.extension;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.util.CommandUtils;
 import org.apache.stratos.load.balancer.common.domain.*;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
@@ -148,6 +149,15 @@ public class LVSConfigWriter {
        private void generateConfigurationForCluster(Cluster cluster, 
Collection<Port> ports, StringBuilder text,
                                                     StringBuilder virtualIPs, 
String virtualIPsForServices,
                                                     String scheduleAlgo) {
+               String commandClear = "ipvsadm --clear";
+               try {
+                       CommandUtils.executeCommand(commandClear);
+               } catch (IOException e) {
+                       if (log.isErrorEnabled()) {
+                               log.error(String.format("Could not run the 
command: %s", commandClear));
+                       }
+                       throw new RuntimeException(e);
+               }
 
                String[] virtualIPForServiceArray;
                if (virtualIPsForServices.contains(",")) {
@@ -159,7 +169,17 @@ public class LVSConfigWriter {
                boolean isServiceAvailable = false;
                for (int i = 0; i < virtualIPForServiceArray.length; i++) {
                        String[] virtualIpForService = 
virtualIPForServiceArray[i].split("\\|");
-                       for (Port port : ports) {
+                   for (Port port : ports) {
+                           String command = "ipvsadm -A -t " + 
virtualIpForService[1]+":" + port.getProxy()+ " -s " + scheduleAlgo;
+
+                           try {
+                                   CommandUtils.executeCommand(command);
+                           } catch (IOException e) {
+                                   if (log.isErrorEnabled()) {
+                                           log.error(String.format("Could not 
run the command: %s", command));
+                                   }
+                                   throw new RuntimeException(e);
+                           }
                                for (String hostname : cluster.getHostNames()) {
                                        if 
(virtualIpForService[0].equals(cluster.getServiceName())) {
 
@@ -185,10 +205,21 @@ public class LVSConfigWriter {
                                                        
text.append(TAB).append(TAB).append(TAB).append("connect_timeout 
3").append(NEW_LINE);
                                                        
text.append(TAB).append(TAB).append("}").append(NEW_LINE);
                                                        
text.append(TAB).append("}").append(NEW_LINE);
+                                                       String commandMember = 
"ipvsadm -a -t " + virtualIpForService[1] + ":" + port.getProxy()+" -r " + 
member.getHostName() + " -m";
+
+                                                       try {
+                                                               
CommandUtils.executeCommand(commandMember);
+                                                       } catch (IOException e) 
{
+                                                               if 
(log.isErrorEnabled()) {
+                                                                       
log.error(String.format("Could not run the command: %s", commandMember));
+                                                               }
+                                                               throw new 
RuntimeException(e);
+                                                       }
                                                }
                                                
text.append("}").append(NEW_LINE);
                                                isServiceAvailable = true;
                                                
virtualIPs.append(TAB).append(TAB).append(virtualIpForService[1]).append(NEW_LINE);
+
                                        }
                                }
                        }

Reply via email to