cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anim...@apache.org
Subject [02/12] git commit: updated refs/heads/4.2 to f09afea
Date Tue, 03 Sep 2013 23:11:31 GMT
CLOUDSTACK-4405: add a tool: cloudstack-agent-upgrade to upgrade bridge name on kvm host
(cherry picked from commit 0ef6084d2c838a78eda29d258b1af98df96451b3)

Signed-off-by: animesh <animesh@apache.org>


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

Branch: refs/heads/4.2
Commit: ad3794df9106886e454ba278e91cf14ce86afb1c
Parents: 0fc996c
Author: Edison Su <sudison@gmail.com>
Authored: Wed Aug 28 15:45:18 2013 -0700
Committer: animesh <animesh@apache.org>
Committed: Tue Sep 3 15:57:08 2013 -0700

----------------------------------------------------------------------
 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/ad3794df/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/ad3794df/packaging/centos63/cloud.spec
----------------------------------------------------------------------
diff --git a/packaging/centos63/cloud.spec b/packaging/centos63/cloud.spec
index 1ae43ba..01685e3 100644
--- a/packaging/centos63/cloud.spec
+++ b/packaging/centos63/cloud.spec
@@ -286,6 +286,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
@@ -547,6 +548,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/ad3794df/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