CLOUDSTACK-657 VMware vNetwork Distributed Virtual Switch support in CloudStack
This is 3rd patch for feature 'Support for VMware dvSwitch in CloudStack'. This patch contains few helper functions (get dvswitch reference, check the type of a port group). Also added method getType() to VirtualSwitchType enum. Signed-off-by: Sateesh Chodapuneedi <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/b667cf73 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/b667cf73 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/b667cf73 Branch: refs/heads/affinity_groups Commit: b667cf7352f19bb6ffb131d65630b3b65b247ff7 Parents: 3798854 Author: sateesh <[email protected]> Authored: Mon Feb 25 16:56:47 2013 +0530 Committer: Prachi Damle <[email protected]> Committed: Thu Mar 14 15:12:59 2013 -0700 ---------------------------------------------------------------------- .../cloud/hypervisor/vmware/mo/DatacenterMO.java | 8 +++ .../hypervisor/vmware/mo/VirtualSwitchType.java | 37 +++++++++++++- .../cloud/hypervisor/vmware/util/VmwareHelper.java | 4 ++ 3 files changed, 46 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b667cf73/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java ---------------------------------------------------------------------- diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java index eb10e16..9f75bd6 100755 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java @@ -470,4 +470,12 @@ public class DatacenterMO extends BaseMO { + dvSwitchUuid); return dvPortBacking; } + + public ManagedObjectReference getDvSwitchMor(String dvSwitchName) throws Exception { + ManagedObjectReference dvSwitchMor = null; + ManagedObjectReference networkFolderMor = null; + networkFolderMor = _context.getServiceUtil().getMoRefProp(_mor, "networkFolder"); + dvSwitchMor = _context.getServiceUtil().getDecendentMoRef(networkFolderMor, "VmwareDistributedVirtualSwitch", dvSwitchName); + return dvSwitchMor; + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b667cf73/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualSwitchType.java ---------------------------------------------------------------------- diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualSwitchType.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualSwitchType.java index d6226ff..bcfc64b 100755 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualSwitchType.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualSwitchType.java @@ -17,8 +17,39 @@ package com.cloud.hypervisor.vmware.mo; + public enum VirtualSwitchType { - StandardVirtualSwitch, - VMwareDistributedVirtualSwitch, - NexusDistributedVirtualSwitch, + None, + StandardVirtualSwitch, + VMwareDistributedVirtualSwitch, + NexusDistributedVirtualSwitch; + + public final static String vmwareStandardVirtualSwitch = "vmwaresvs"; + public final static String vmwareDistributedVirtualSwitch = "vmwaredvs"; + public final static String nexusDistributedVirtualSwitch = "nexusdvs"; + + public static VirtualSwitchType getType(String vSwitchType) { + if (vSwitchType == null) { + return VirtualSwitchType.StandardVirtualSwitch; + } else if (vSwitchType.equalsIgnoreCase(vmwareStandardVirtualSwitch)) { + return VirtualSwitchType.VMwareDistributedVirtualSwitch; + } else if (vSwitchType.equalsIgnoreCase(vmwareDistributedVirtualSwitch)) { + return VirtualSwitchType.NexusDistributedVirtualSwitch; + } else if (vSwitchType.equalsIgnoreCase(nexusDistributedVirtualSwitch)) { + return VirtualSwitchType.StandardVirtualSwitch; + } + return VirtualSwitchType.None; + } + + @Override + public String toString() { + if (this == VirtualSwitchType.StandardVirtualSwitch) { + return vmwareStandardVirtualSwitch; + } else if (this == VirtualSwitchType.VMwareDistributedVirtualSwitch) { + return vmwareDistributedVirtualSwitch; + } else if (this == VirtualSwitchType.NexusDistributedVirtualSwitch) { + return nexusDistributedVirtualSwitch; + } + return ""; + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b667cf73/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java ---------------------------------------------------------------------- diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java index 352c584..72b4714 100644 --- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java @@ -632,4 +632,8 @@ public class VmwareHelper { Random random = new Random(); return candidates.get(random.nextInt(candidates.size())); } + + public static boolean isDvPortGroup(ManagedObjectReference networkMor) { + return "DistributedVirtualPortgroup".equalsIgnoreCase(networkMor.getType()); + } }
