[ https://issues.apache.org/jira/browse/CLOUDSTACK-8956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14969021#comment-14969021 ]
ASF GitHub Bot commented on CLOUDSTACK-8956: -------------------------------------------- Github user wilderrodrigues commented on a diff in the pull request: https://github.com/apache/cloudstack/pull/935#discussion_r42740183 --- Diff: vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java --- @@ -79,6 +79,52 @@ public static boolean isReservedScsiDeviceNumber(int deviceNumber) { return deviceNumber == 7; } + public static VirtualDevice prepareNicOpaque(VirtualMachineMO vmMo, VirtualEthernetCardType deviceType, String portGroupName, + String macAddress, int deviceNumber, int contextNumber, boolean conntected, boolean connectOnStart) throws Exception { + + assert(vmMo.getRunningHost().hasOpaqueNSXNetwork()); + + VirtualEthernetCard nic; + switch (deviceType) { + case E1000: + nic = new VirtualE1000(); + break; + + case PCNet32: + nic = new VirtualPCNet32(); + break; + + case Vmxnet2: + nic = new VirtualVmxnet2(); + break; + + case Vmxnet3: + nic = new VirtualVmxnet3(); + break; + + default: + assert (false); --- End diff -- Why this "assert (false);" here? Asserting as false might cause problems. ``` Each assertion contains a boolean expression that you believe will be true when the assertion executes. If it is not true, the system will throw an error. ``` Source: http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html The user os assertion in this way is irrelevant and error-prone. Could you please remove it and push a new commit? Cheers, Wilder > NSX/Nicira Plugin does not support NSX v4.2.1 > --------------------------------------------- > > Key: CLOUDSTACK-8956 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8956 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Components: VMware > Affects Versions: 4.4.0, 4.5.0, 4.4.1, 4.4.2, 4.4.3, 4.5.1, 4.4.4 > Environment: OS: RHEL 6.6 > Reporter: Nicolas Vazquez > Fix For: 4.5.1, 4.6.0 > > > h3. Description of the problem: > Prior to version 4.2. Nicira/VmWare NSX used a variation of Open vSwitch as > means of integrating SDN into hypervisor layer. Cloudstack NiciraNVP plugin > was written to support OVS as a bridge to NSX. > In version 4.2 VMware introduced NSX vSwitch as a replacement for OVS in ESX > hypervisors. It is a fork of distributed vSwitch leveraging one of the recent > features of ESX called opaque networks. Because of that change the current > version of NiciraNVP plugin doesn’t support versions of NSX-MH above 4.2 > specifically in Vsphere environment. Proposed fix will analyze a version of > NVP/NSX API and use proper support for ESX hypervisors. > vSphere hypervisor mode operations when NV is deployed onto NSX managed > network changes: > * Current mode. A portgroup = UUID of CS VM NIC is created on a local > standard switch of the Hypervisor where VM is starting. VM nic is attached to > that port group. > * New mode. No additional port group is created on a HW. No port group > cleanup is needed after VM/NIC is destroyed. VM is attached to 1st port group > having the following attributes: > ** opaqueNetworkId string "br-int” > ** opaqueNetworkType string "nsx.network" > If portgroup with such attributes is not found a deployment should fail with > exception. > h3. VMware vSphere API version from 5.1 to 5.5: > Since vSphere API version 5.5, > [OpaqueNetworks|https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.OpaqueNetwork.html] > are introduced. > Its description says: > bq. This interface defines an opaque network, in the sense that the detail > and configuration of the network is unknown to vShpere and is managed by a > management plane outside of vSphere. However, the identifier and name of > these networks is made available to vSphere so that host and virtual machine > virtual ethernet device can connect to them. > In order to connect a vm's virtual ethernet device to the proper opaque > network when deploying a vm into a NSX managed network, we first need to look > for a particular opaque network on hosts. This opaque network's id has to be > *"br-int"* and its type *"nsx.network"*. > Since vSphere API version 5.5 > [HostNetworkInfo|https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.host.NetworkInfo.html#opaqueNetwork] > introduces a list of available opaque networks for each host. > If NSX API version >= 4.2 we look for a > [OpaqueNetworkInfo|https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.host.OpaqueNetworkInfo.html] > which satisfies: > * opaqueNetworkId = "br-int" > * opaqueNetworkType = "nsx.netork" > If that opaque network is found, then we need to attach vm's NIC to a virtual > ethernet device which support this, so we use > [VirtualEthernetCardOpaqueNetworkBackingInfo|https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.vm.device.VirtualEthernetCard.OpaqueNetworkBackingInfo.html] > setting: > * opaqueNetworkId = "br-int" > * opaqueNetworkType = "nsx.netork" -- This message was sent by Atlassian JIRA (v6.3.4#6332)