mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
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>
This commit is contained in:
parent
87dde7024b
commit
7b4f846220
50
agent/bindir/cloudstack-agent-upgrade.in
Normal file
50
agent/bindir/cloudstack-agent-upgrade.in
Normal file
@ -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")
|
||||||
@ -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/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/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/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 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
|
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
|
cp plugins/hypervisors/kvm/target/dependencies/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-agent/lib
|
||||||
@ -548,6 +549,7 @@ fi
|
|||||||
|
|
||||||
%files agent
|
%files agent
|
||||||
%attr(0755,root,root) %{_bindir}/%{name}-setup-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) %{_bindir}/%{name}-ssh
|
||||||
%attr(0755,root,root) %{_sysconfdir}/init.d/%{name}-agent
|
%attr(0755,root,root) %{_sysconfdir}/init.d/%{name}-agent
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}-common/scripts/network/cisco
|
%attr(0755,root,root) %{_datadir}/%{name}-common/scripts/network/cisco
|
||||||
|
|||||||
@ -35,6 +35,11 @@ class networkConfig:
|
|||||||
self.method = None
|
self.method = None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
def listNetworks():
|
||||||
|
devs = os.listdir("/sys/class/net/")
|
||||||
|
devs = filter(networkConfig.isBridge, devs)
|
||||||
|
return devs
|
||||||
|
@staticmethod
|
||||||
def getDefaultNetwork():
|
def getDefaultNetwork():
|
||||||
cmd = bash("route -n|awk \'/^0.0.0.0/ {print $2,$8}\'")
|
cmd = bash("route -n|awk \'/^0.0.0.0/ {print $2,$8}\'")
|
||||||
if not cmd.isSuccess():
|
if not cmd.isSuccess():
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user