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.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cdbcc666
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cdbcc666
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cdbcc666
Branch: refs/heads/master
Commit: cdbcc6663718fc92c20e576c3e958d6c2276aca0
Parents: a9549a7
Author: Vijayendra Bhamidipati <[email protected]>
Authored: Fri Jul 12 05:02:26 2013 -0700
Committer: Sheng Yang <[email protected]>
Committed: Mon Jul 15 16:08:32 2013 -0700
----------------------------------------------------------------------
.../vmware/mo/HypervisorHostHelper.java | 28 +++++++++++++-------
1 file changed, 19 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cdbcc666/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
----------------------------------------------------------------------
diff --git
a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
index dc1486a..dd0f889 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
@@ -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);
+ }
}
}