cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From weiz...@apache.org
Subject [1/4] git commit: updated refs/heads/master to 164e3e3
Date Tue, 24 Sep 2013 07:57:23 GMT
Updated Branches:
  refs/heads/master 87dde7024 -> 164e3e33b


CLOUDSTACK-4405: add a tool: cloudstack-agent-upgrade to upgrade bridge name on kvm host
(cherry picked from commit 0ef6084d2c838a78eda29d258b1af98df96451b3)

Signed-off-by: Wei Zhou <w.zhou@leaseweb.com>


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

Branch: refs/heads/master
Commit: 7b4f84622051b532a7e272dc1ed87310ea119cbc
Parents: 87dde70
Author: Edison Su <sudison@gmail.com>
Authored: Wed Aug 28 15:45:18 2013 -0700
Committer: Wei Zhou <w.zhou@leaseweb.com>
Committed: Tue Sep 24 09:53:05 2013 +0200

----------------------------------------------------------------------
 agent/bindir/cloudstack-agent-upgrade.in | 50 +++++++++++++++++++++++++++
 packaging/centos63/cloud.spec            |  2 ++
 python/lib/cloudutils/networkConfig.py   |  5 +++
 3 files changed, 57 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7b4f8462/agent/bindir/cloudstack-agent-upgrade.in
----------------------------------------------------------------------
diff --git a/agent/bindir/cloudstack-agent-upgrade.in b/agent/bindir/cloudstack-agent-upgrade.in
new file mode 100644
index 0000000..4972d39
--- /dev/null
+++ b/agent/bindir/cloudstack-agent-upgrade.in
@@ -0,0 +1,50 @@
+#!/usr/bin/python
+# 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.
+from cloudutils.networkConfig import networkConfig
+from cloudutils.utilities import bash
+def isOldStyleBridge(brName):
+    if brName.find("cloudVirBr") == 0:
+       return True
+    else:
+       return False
+def upgradeBridgeName(brName, enslavedDev):
+    print("upgrade bridge: %s, %s"%(brName, enslavedDev))
+    vlanId = brName.replace("cloudVirBr", "")
+    print("find vlan Id: %s"%vlanId)
+    phyDev = enslavedDev.split(".")[0]
+    print("find physical device %s"%phyDev)
+    newBrName = "br" + phyDev + "-" + vlanId
+    print("new bridge name %s"%newBrName)
+    bash("ip link set %s down"%brName) 
+    bash("ip link set %s name %s"%(brName, newBrName))
+    bash("ip link set %s up" %newBrName)
+if __name__ == '__main__':
+   netlib = networkConfig() 
+   bridges = netlib.listNetworks()
+   bridges = filter(isOldStyleBridge, bridges)
+   for br in bridges:
+       enslavedDev = netlib.getEnslavedDev(br, 1)
+       if enslavedDev is not None:
+           upgradeBridgeName(br, enslavedDev)
+   
+   bridges = netlib.listNetworks()
+   bridges = filter(isOldStyleBridge, bridges)
+   if len(bridges) > 0:
+       print("Warning: upgrade is not finished, still some bridges have the old style name:"
+ str(bridges))
+   else:
+       print("Upgrade succeed")

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7b4f8462/packaging/centos63/cloud.spec
----------------------------------------------------------------------
diff --git a/packaging/centos63/cloud.spec b/packaging/centos63/cloud.spec
index fba2b1a..0e4255a 100644
--- a/packaging/centos63/cloud.spec
+++ b/packaging/centos63/cloud.spec
@@ -287,6 +287,7 @@ install -D agent/target/transformed/agent.properties ${RPM_BUILD_ROOT}%{_sysconf
 install -D agent/target/transformed/environment.properties ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/agent/environment.properties
 install -D agent/target/transformed/log4j-cloud.xml ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/agent/log4j-cloud.xml
 install -D agent/target/transformed/cloud-setup-agent ${RPM_BUILD_ROOT}%{_bindir}/%{name}-setup-agent
+install -D agent/target/transformed/cloudstack-agent-upgrade ${RPM_BUILD_ROOT}%{_bindir}/%{name}-agent-upgrade
 install -D agent/target/transformed/cloud-ssh ${RPM_BUILD_ROOT}%{_bindir}/%{name}-ssh
 install -D plugins/hypervisors/kvm/target/cloud-plugin-hypervisor-kvm-%{_maventag}.jar ${RPM_BUILD_ROOT}%{_datadir}/%name-agent/lib/cloud-plugin-hypervisor-kvm-%{_maventag}.jar
 cp plugins/hypervisors/kvm/target/dependencies/*  ${RPM_BUILD_ROOT}%{_datadir}/%{name}-agent/lib
@@ -548,6 +549,7 @@ fi
 
 %files agent
 %attr(0755,root,root) %{_bindir}/%{name}-setup-agent
+%attr(0755,root,root) %{_bindir}/%{name}-agent-upgrade
 %attr(0755,root,root) %{_bindir}/%{name}-ssh
 %attr(0755,root,root) %{_sysconfdir}/init.d/%{name}-agent
 %attr(0755,root,root) %{_datadir}/%{name}-common/scripts/network/cisco

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7b4f8462/python/lib/cloudutils/networkConfig.py
----------------------------------------------------------------------
diff --git a/python/lib/cloudutils/networkConfig.py b/python/lib/cloudutils/networkConfig.py
index 405a3be..41ef9d9 100644
--- a/python/lib/cloudutils/networkConfig.py
+++ b/python/lib/cloudutils/networkConfig.py
@@ -35,6 +35,11 @@ class networkConfig:
             self.method = None 
      
     @staticmethod
+    def listNetworks():
+        devs = os.listdir("/sys/class/net/") 
+        devs = filter(networkConfig.isBridge, devs) 
+        return devs
+    @staticmethod
     def getDefaultNetwork():
         cmd = bash("route -n|awk \'/^0.0.0.0/ {print $2,$8}\'") 
         if not cmd.isSuccess():


Mime
View raw message