You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/09/24 20:19:06 UTC
[06/19] git commit: updated refs/heads/ui-restyle to 4b63867
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....@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/ui-restyle
Commit: 7b4f84622051b532a7e272dc1ed87310ea119cbc
Parents: 87dde70
Author: Edison Su <su...@gmail.com>
Authored: Wed Aug 28 15:45:18 2013 -0700
Committer: Wei Zhou <w....@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():