#!/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")