mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
CLOUDSTACK-3311: PVLAN - vmware dvswitch - stop/start nd reboot Virtual router FAIL
Description:
Fix logic to check for secondary pvlan id already existing on vmware DVS, and
fix int to Integer comparison.
This commit is contained in:
parent
a9549a7f81
commit
cdbcc66637
@ -604,19 +604,29 @@ public class HypervisorHostHelper {
|
||||
private static void setupPVlanPair(DistributedVirtualSwitchMO dvSwitchMo, ManagedObjectReference morDvSwitch,
|
||||
Integer vid, Integer spvlanid) throws Exception {
|
||||
Map<Integer, HypervisorHostHelper.PvlanType> vlanmap = dvSwitchMo.retrieveVlanPvlan(vid, spvlanid, morDvSwitch);
|
||||
if (vlanmap.size() != 0) {
|
||||
// Then either vid or pvlanid or both are already being used.
|
||||
if (vlanmap.containsKey(vid) && vlanmap.get(vid) != HypervisorHostHelper.PvlanType.promiscuous) {
|
||||
if (!vlanmap.isEmpty()) {
|
||||
// Then either vid or pvlanid or both are already being used. Check how.
|
||||
// First the primary pvlan id.
|
||||
if (vlanmap.containsKey(vid) && !vlanmap.get(vid).equals(HypervisorHostHelper.PvlanType.promiscuous)) {
|
||||
// This VLAN ID is already setup as a non-promiscuous vlan id on the DVS. Throw an exception.
|
||||
String msg = "VLAN ID " + vid + " is already in use as a " + vlanmap.get(vid).toString() + " VLAN on the DVSwitch";
|
||||
String msg = "Specified primary PVLAN ID " + vid + " is already in use as a " + vlanmap.get(vid).toString() + " VLAN on the DVSwitch";
|
||||
s_logger.error(msg);
|
||||
throw new Exception(msg);
|
||||
}
|
||||
if ((vid != spvlanid) && vlanmap.containsKey(spvlanid) && vlanmap.get(spvlanid) != HypervisorHostHelper.PvlanType.isolated) {
|
||||
// This PVLAN ID is already setup as a non-isolated vlan id on the DVS. Throw an exception.
|
||||
String msg = "PVLAN ID " + spvlanid + " is already in use as a " + vlanmap.get(spvlanid).toString() + " VLAN in the DVSwitch";
|
||||
s_logger.error(msg);
|
||||
throw new Exception(msg);
|
||||
// Next the secondary pvlan id.
|
||||
if (spvlanid.equals(vid)) {
|
||||
if (vlanmap.containsKey(spvlanid) && !vlanmap.get(spvlanid).equals(HypervisorHostHelper.PvlanType.promiscuous)) {
|
||||
String msg = "Specified secondary PVLAN ID " + spvlanid + " is already in use as a " + vlanmap.get(spvlanid).toString() + " VLAN in the DVSwitch";
|
||||
s_logger.error(msg);
|
||||
throw new Exception(msg);
|
||||
}
|
||||
} else {
|
||||
if (vlanmap.containsKey(spvlanid) && !vlanmap.get(spvlanid).equals(HypervisorHostHelper.PvlanType.isolated)) {
|
||||
// This PVLAN ID is already setup as a non-isolated vlan id on the DVS. Throw an exception.
|
||||
String msg = "Specified secondary PVLAN ID " + spvlanid + " is already in use as a " + vlanmap.get(spvlanid).toString() + " VLAN in the DVSwitch";
|
||||
s_logger.error(msg);
|
||||
throw new Exception(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user