Loading

×Sorry to interrupt
Uncaught ReferenceError: addCTracking is not defined
throws at https://kb.vmware.com/resource/KM_TealiumTrackingJS?v=0.5:100:1

Refresh

Cookie Preference Center

General Information on cookies

When you visit our website, we use cookies to ensure that we give you the best experience. This information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies by clicking on the different category headings to find out more and change your settings. However, blocking some types of cookies may impact your experience on the site and the services we are able to offer. Further information can be found in our

Cookie Policy.

Strictly Necessary

Strictly Necessary

Always Active

Strictly Necessary

Strictly necessary cookies are always enabled since they are essential for our website to function. They enable core functionality such as security, network management, and website accessibility. You can set your browser to block or alert you about these cookies, but this may affect how the website functions. For more information please visit www.aboutcookies.org or www.allaboutcookies.org.

Cookie Details‎

Performance

Performance

Performance

Performance cookies are used to analyze the user experience to improve our website by collecting and reporting information on how you use it. They allow us to know which pages are the most and least popular, see how visitors move around the site, optimize our website and make it easier to navigate.

Cookie Details‎

Please confirm your settings by refreshing the page.

Functional

Functional

Functional

Functional cookies help us keep track of your past browsing choices so we can improve usability and customize your experience. These cookies enable the website to remember your preferred settings, language preferences, location and other customizable elements such as font or text size. If you do not allow these cookies, then some or all of these services may not function properly.

Cookie Details‎

Advertising

Advertising

Advertising

Advertising cookies are used to send you relevant advertising and promotional information. They may be set through our site by third parties to build a profile of your interests and show you relevant advertisements on other sites. These cookies do not directly store personal information, but their function is based on uniquely identifying your browser and internet device.

Cookie Details‎

Advertising Cookies

Consent Leg.Interest

Select All Vendors

Select All Vendors

Select All Hosts

Select All

Clear Filters

Information storage and access

Apply

Confirm My Choices Reject All Allow All

My Subscriptions

Loading

Knowledge Base

NSX-T Support for Partner for networking interoperability (66907)

Last Updated: 2/2/2019Categories: InformationalTotal Views: 6573Language:
JapaneseEnglish

Subscribe to get an email
newsletter with new updates

Please provide article feedback:

Purpose

This article provides information on VMware NSX-T Support for Partner for networking interoperability.

Resolution

About NSX-T

NSX-T is VMware's multi-hypervisor, multi-cloud Networking & Security platform for workloads running on-premises and the public cloud.

The platform is vCenter agnostic but does have some loose vCenter integrations.

For more information, see:

NSX-T

NSX-T API

About N-VDS

NSX-T manages the lifecycle of its own virtual switches agnostic of Compute Manager(vCenter). The switch is called the N-VDS.

On ESX hypervisors, the N-VDS is NSX's version of vswitch which manifests as an Opaque switch on vSphere.

On non-ESX hypervisors, the N-VDS is our version of OpenvSwitch (OVS).

On Bare-Metal and in native public clouds, we install an NSX agent.

How Partners should interact with NSX-T

Option A: Partners can integrate with NSX-T directly through NSX-T Rest APIs. For more information, see the NSX-T Manager API Guide.

These APIs are homogenous across multiple hypervisors types: ESX, KVM as well as multiple workload types VM, BM, Container, Cloud.

There are also several API plugins to choose from:

NSX-T Terraform Provider

NSX-T Ansible

NSX-T Python

Option B: Partners can continue to use with VIM apis or vSphere SDKs to interact with "select" NSX-T networking features if the workload is running on ESX hypervisors. The following are the only APIs that interacts with Opaque networks.

Note: For partners who interact with VIM APIs or vSphere SDKs, all NSX-T managed VMs have NIC backing as "Opaque Network" hence some code changes may be required as below.

VM related APIs

vim.vm.device.VirtualEthernetCard.OpaqueNetworkBackingInfo
vim.vm.device.VirtualEthernetCard.OpaqueNetworkBackingInfo is introduced and it extends vim.vm.device.VirtualDevice.BackingInfo. Code changes are needed if you want the VM to connect to an Opaque network or you already have a VM connected to an Opaque network. Most of VM operations are affected such as reconfig, vMotion, clone, etc.

Affected API

vim.vm.check.CompatibilityChecker.checkVmConfig

vim.ResourcePool.createVm

vim.Folder.createVm

vim.VirtualMachine.reconfigure

vim.vm.check.ProvisioningChecker.checkRelocate

vim.VirtualMachine.relocate

vim.vm.check.ProvisioningChecker.checkClone

vim.VirtualMachine.clone

vim.ClusterComputeResource.placeVm

vim.vm.check.ProvisioningChecker.checkInstantClone

vim.VirtualMachine.instantClone

Code changes are also needed if you invoke the API which return an object containing vim.vm.device.VirtualDevice.BackingInfo and you want to get some information from it.

Vmknic related APIs

vim.host.VirtualNic.OpaqueNetworkSpec
vim.host.VirtualNic.OpaqueNetworkSpec is introduced as a property of vim.host.VirtualNic. code changes are needed if you want to connect a vmknic to an Opaque network.

Affected API

vim.host.NetworkSystem.addServiceConsolVirtualNic

vim.host.NetworkSystem.AddVirtualNic

vim.host.NetworkSystem.UpdateServiceConsoleVirtualNic

vim.host.NetworkSystem.UpdateVirtualNic

Host network related APIs

vim.OpaqueNetwork
vim.OpaqueNetwork extends vim.Network. So all APIs related with vim.Network are affected. vim.Network is read only property, there is no API to change that. Here is a list of objects/properties which contain vim.Network. Since it does not change anything in the base class, your script still works but you may lose additional information for the Opaque network.

vim.HostSystem

vim.fault.CannotAccessNetwork

vim.fault.CannotUseNetwork

vim.ComputeResource

vim.Datacenter

vim.host.Summary.ConfigSummary

vim.host.EsxAgentHostManager.ConfigInfo

vim.vApp.IpPool.Association

vim.event.NetworkEventArgument

vim.Network.Summary

vim.fault.NoAvailableIp

vim.vcha.FailoverClusterConfiguration.NodeDeploymentSpec

vim.OvfManager.NetworkMapping

vim.vApp.CloneSpec.NetworkMappingPair

vim.VirtualApp

vim.vm.device.VirtualEthernetCard.NetworkBackingInfo

vim.VirtualMachine

vim.host.OpaqueSwitch and vim.host.OpaqueNetworkInfo
vim.host.OpaqueSwitch and vim.host.OpaqueNetworkInfo are new properties in vim.host.NetworkInfo. So all APIs related with vim.host.Networkinfo are affected. They are read only properties for the user. If you want to get them correctly, code changes are needed for your script. Affected objects and APIs:

Affected Objects

Note

vim.host.NetworkInfo

vim.host.ConfigInfo

vim.host.NetworkInfo is a property of it

vim.host.NetworkSystem

vim.host.NetworkInfo is a property of it

vim.host.ConfigManager

vim.host.HostNetworkSystem is a property of it

vim.HostSystem

vim.host.ConfigInfo is a property of it
vim.host.ConfigManager is a property of it

For more information on how to interact with the VIM API, see Managed Object - Opaque Network.

If you interact with vSphere using SDKs, here are some of vSphere SDK code samples:

Sample code

private VirtualDeviceBackingInfo getBacking(ManagedObjectReference network)
throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg {
switch (network.getType()) {
case "Network":
VirtualEthernetCardNetworkBackingInfo nicBacking = new VirtualEthernetCardNetworkBackingInfo();
nicBacking.setDeviceName(value);
return nicBacking;

case "OpaqueNetwork":
OpaqueNetworkSummary opaqueNetworkSummary = (OpaqueNetworkSummary) getMOREFs.entityProps(network,
"summary");
VirtualEthernetCardOpaqueNetworkBackingInfo opaqueBack = new VirtualEthernetCardOpaqueNetworkBackingInfo();
opaqueBack.setOpaqueNetworkId(opaqueNetworkSummary.getOpaqueNetworkId());
opaqueBack.setOpaqueNetworkType(opaqueNetworkSummary.getOpaqueNetworkType());
return opaqueBack;

case "DistributedVirtualPortgroup":
DVPortgroupConfigInfo dvPortgroupConfigInfo = (DVPortgroupConfigInfo) getMOREFs.entityProps(network,
"config");
String uuid = getMOREFs.entityProps(dvPortgroupConfigInfo.getDistributedVirtualSwitch(), "uuid").toString();
VirtualEthernetCardDistributedVirtualPortBackingInfo dvpBack = new VirtualEthernetCardDistributedVirtualPortBackingInfo();
DistributedVirtualSwitchPortConnection dvsPortConnection = new DistributedVirtualSwitchPortConnection();
dvsPortConnection.setPortgroupKey(dvPortgroupConfigInfo.getKey());
dvsPortConnection.setSwitchUuid(uuid);
dvpBack.setPort(dvsPortConnection);
return dvpBack;
default:
return null;
}

}

.....

//Add a new nic
VirtualEthernetCard nic = new VirtualE1000E();
//get the list of available host networks
HashMap<String, ManagedObjectReference> availableNetworks = getAvailableHostNetworks();
if (availableNetworks.containsKey(value)) {
nic.setBacking(getBacking(availableNetworks.get(value)));
} else {
nic.setBacking(null);
}

VirtualDeviceConnectInfo deviceConnectInfo = new VirtualDeviceConnectInfo();
deviceConnectInfo.setStartConnected((nic.getBacking() != null));
deviceConnectInfo.setConnected((nic.getBacking() != null));

nic.setConnectable(deviceConnectInfo);
nic.setAddressType("generated");
nic.setKey(-1);
VirtualDeviceConfigSpec nicSpec = new VirtualDeviceConfigSpec();
nicSpec.setOperation(VirtualDeviceConfigSpecOperation.ADD);
nicSpec.setDevice(nic);
nicSpecArray.add(nicSpec);
vmConfigSpec.getDeviceChange().addAll(nicSpecArray);
ManagedObjectReference tmor = vimPort.reconfigVMTask(virtualMachine, vmConfigSpec);
if (getTaskResultAfterDone(tmor)) {
System.out.println("Virtual Machine reconfigured successfully");
} else {
System.out.println("Virtual Machine reconfigur failed");
}

Code Examples:

Pyvmomi Sample

Fog in Ruby

Ansible in python

PowerCLI Sample

Detectable by VMware SkylineTM

Actions

Copy

link to clipboard
copied!

Print

Language:
JapaneseEnglish

Attachments

Additional Resources

No results for undefined

Ask The Community

Get answers quickly from VMware experts in the community

Post Subject

CONTINUE IN COMMUNITIES

Related Products:

Related Versions:

VMware NSX-T

Take Our Survey

Support Assistant