You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ap...@apache.org on 2013/06/12 07:47:42 UTC

git commit: updated refs/heads/master to 360eae3

Updated Branches:
  refs/heads/master 358f3edc5 -> 360eae368


Cloudstack-2854 [Multiple_IP_Ranges] Failed to create ip alias on VR while deploying guest vm with ip address from new CIDR

Signed-off-by: Abhinandan Prateek <ap...@apache.org>


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

Branch: refs/heads/master
Commit: 360eae368767f374fe13d5ba2b8a9056d0ef8633
Parents: 358f3ed
Author: Bharat Kumar <bh...@citrix.com>
Authored: Wed Jun 5 21:52:57 2013 +0530
Committer: Abhinandan Prateek <ap...@apache.org>
Committed: Wed Jun 12 11:15:47 2013 +0530

----------------------------------------------------------------------
 .../virtualnetwork/VirtualRoutingResource.java  | 50 ++++++++++++--------
 scripts/network/domr/call_dnsmasq.sh            | 29 ++++++++++++
 scripts/network/domr/createipAlias.sh           | 26 ++++++++++
 scripts/network/domr/deleteipAlias.sh           | 25 ++++++++++
 4 files changed, 109 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/360eae36/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
index 9e40eef..dae1c85 100755
--- a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
+++ b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
@@ -111,7 +111,7 @@ public class VirtualRoutingResource implements Manager {
     private String _routerProxyPath;
     private String _createIpAliasPath;
     private String _deleteIpAliasPath;
-    private String _configDhcpPath;
+    private String _callDnsMasqPath;
 
     private int _timeout;
     private int _startTimeout;
@@ -625,7 +625,8 @@ public class VirtualRoutingResource implements Manager {
         String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
         final Script command  = new Script(_createIpAliasPath, _timeout, s_logger);
         List<IpAliasTO> ipAliasTOs = cmd.getIpAliasList();
-        String args=routerIp+" ";
+        String args = "";
+        command.add(routerIp);
         for (IpAliasTO ipaliasto : ipAliasTOs) {
             args = args + ipaliasto.getAlias_count()+":"+ipaliasto.getRouterip()+":"+ipaliasto.getNetmask()+"-";
         }
@@ -637,7 +638,8 @@ public class VirtualRoutingResource implements Manager {
     protected Answer execute(final DeleteIpAliasCommand cmd) {
         final Script command  = new Script(_deleteIpAliasPath, _timeout, s_logger);
         String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
-        String args = "";
+        String args ="";
+        command.add(routerIp);
         List<IpAliasTO> revokedIpAliasTOs = cmd.getDeleteIpAliasTos();
         for (IpAliasTO ipAliasTO : revokedIpAliasTOs) {
             args = args + ipAliasTO.getAlias_count()+":"+ipAliasTO.getRouterip()+":"+ipAliasTO.getNetmask()+"-";
@@ -653,32 +655,26 @@ public class VirtualRoutingResource implements Manager {
     }
 
     protected Answer execute(final DnsMasqConfigCommand cmd) {
-        final Script command  = new Script(_configDhcpPath, _timeout, s_logger);
+        final Script command  = new Script(_callDnsMasqPath, _timeout, s_logger);
         String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
         DnsMasqConfigurator configurator = new DnsMasqConfigurator();
         String [] config = configurator.generateConfiguration(cmd);
-        File tmpCfgFile = null;
+        String cfgFileName = routerIp.replace(".","-")+"dns.cgf";
+        String tmpCfgFileContents = "";
+        for (int i = 0; i < config.length; i++) {
+            tmpCfgFileContents += config[i];
+            tmpCfgFileContents += "\n";
+        }
+        File permKey = new File("/root/.ssh/id_rsa.cloud");
+        String cfgFilePath = "/tmp/"+cfgFileName;
         try {
-            String cfgFilePath = "";
-            if (routerIp != null) {
-                tmpCfgFile = File.createTempFile(routerIp.replace('.', '_'), "cfg");
-                final PrintWriter out
-                        = new PrintWriter(new BufferedWriter(new FileWriter(tmpCfgFile)));
-                for (int i=0; i < config.length; i++) {
-                    out.println(config[i]);
-                }
-                out.close();
-                cfgFilePath = tmpCfgFile.getAbsolutePath();
-            }
+            SshHelper.scpTo(routerIp, 3922, "root", permKey, null, "/tmp/", tmpCfgFileContents.getBytes(), cfgFileName, null);
+            command.add(routerIp);
             command.add(cfgFilePath);
             final String result = command.execute();
             return new Answer(cmd, result == null, result);
-        } catch (final IOException e) {
+        } catch (Exception e) {
             return new Answer(cmd, false, e.getMessage());
-        } finally {
-            if (tmpCfgFile != null) {
-                tmpCfgFile.delete();
-            }
         }
     }
 
@@ -1209,6 +1205,18 @@ public class VirtualRoutingResource implements Manager {
         if (_routerProxyPath == null) {
             throw new ConfigurationException("Unable to find router_proxy.sh");
         }
+        _createIpAliasPath = findScript("createipAlias.sh");
+        if (_createIpAliasPath == null) {
+            throw new ConfigurationException("unable to find createipAlias.sh");
+        }
+        _deleteIpAliasPath = findScript("deleteipAlias.sh");
+        if (_deleteIpAliasPath == null) {
+            throw  new ConfigurationException("unable to find deleteipAlias.sh");
+        }
+        _callDnsMasqPath = findScript("call_dnsmasq.sh");
+        if (_callDnsMasqPath == null) {
+            throw  new ConfigurationException("unable to find call_dnsmasq.sh");
+        }
         
         return true;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/360eae36/scripts/network/domr/call_dnsmasq.sh
----------------------------------------------------------------------
diff --git a/scripts/network/domr/call_dnsmasq.sh b/scripts/network/domr/call_dnsmasq.sh
new file mode 100755
index 0000000..097e185
--- /dev/null
+++ b/scripts/network/domr/call_dnsmasq.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+# 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.
+
+usage() {
+  printf "Usage: %s:  <domR eth1 ip>  <path_to_new_config_file>\n" $(basename $0) >&2
+}
+
+set -x
+
+cert="/root/.ssh/id_rsa.cloud"
+
+ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$1 "/root/dnsmasq.sh $2"	 
+exit $?
+      

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/360eae36/scripts/network/domr/createipAlias.sh
----------------------------------------------------------------------
diff --git a/scripts/network/domr/createipAlias.sh b/scripts/network/domr/createipAlias.sh
new file mode 100755
index 0000000..c35658e
--- /dev/null
+++ b/scripts/network/domr/createipAlias.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+# 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.
+
+
+usage() {
+  printf " %s  routerip  <alias_count:ip:netmask;alias_count2:ip2:netmask2;....> \n" $(basename $0) >&2
+}
+
+set -x
+cert="/root/.ssh/id_rsa.cloud"
+ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$1 "/root/createIpAlias.sh $2"

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/360eae36/scripts/network/domr/deleteipAlias.sh
----------------------------------------------------------------------
diff --git a/scripts/network/domr/deleteipAlias.sh b/scripts/network/domr/deleteipAlias.sh
new file mode 100755
index 0000000..6816edd
--- /dev/null
+++ b/scripts/network/domr/deleteipAlias.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# 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.
+
+usage() {
+  printf " %s  routerip  <alias_count:ip:netmask;alias_count2:ip2:netmask2;....> \n" $(basename $0) >&2
+}
+
+set -x
+cert="/root/.ssh/id_rsa.cloud"
+ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$1 "/root/deleteIpAlias.sh $2 $3"