Differentiating Plug-in Instances

When the vSphere Client checks the vCenter Server's Extension Manager for new remote plug-ins it also checks for new instances of a remote plug-in. If the vSphere Client finds two extension registrations in two different vCenter Server instances such that the extension ID and extension version are the same but the plug-in manifest URL (ExtensionClientInfo.url) is different, then these two extensions are considered to be different instances of the same remote plug-in.

For example, consider an ELM environment with three vCenter Server instances. Suppose that the following extension registration commands are executed:

./extension-registration.sh -action registerPlugin -url https://vc1.example.com/sdk -u "[email protected]" -p 'Admin!23' -c 'Example, Inc.' -n 'Remote Plugin Test' -s 'A test plugin demonstrating plugin instances' -k com.example.remoteplugin.test -pu "https://pluginserver1.example.com/path/to/plugin.json" -v "1.0.0" -st plugin1_server_thumbprint -remote

./extension-registration.sh -action registerPlugin -url https://vc2.example.com/sdk -u "[email protected]" -p 'Admin!23' -c 'Example, Inc.' -n 'Remote Plugin Test' -s 'A test plugin demonstrating plugin instances' -k com.example.remoteplugin.test -pu "https://pluginserver1.example.com/path/to/plugin.json" -v "1.0.0" -st plugin1_server_thumbprint -remote

Both VC1 and VC2 have the same plug-in manifest, and thus the same plug-in server. This is considered to be a single plug-in instance, registered with two vCenter Server instances.

Now suppose that we register the following extension in VC3:

./extension-registration.sh -action registerPlugin -url https://vc3.example.com/sdk -u "[email protected]" -p 'Admin!23' -c 'Example, Inc.' -n 'Remote Plugin Test' -s 'A test plugin demonstrating plugin instances' -k com.example.remoteplugin.test -pu "https://pluginserver2.example.com/path/to/plugin.json" -v "1.0.0" -st plugin2_server_thumbprint -remote

The extension registered in VC3 has the same ID and version as the one registered in VC1 and VC2 but has a different manifest URL. The next time a user logs in, the vSphere Client will detect that this is a different instance of the remote plugin with ID com.example.remoteplugin.test, version 1.0.0. The UI will show the following behavior:

  • Object views declared by plug-in instance 2 (registered in VC3) will be shown for the corresponding objects from VC3. However, the views declared by instance 1 (registered in VC1 and VC2) will be shown for objects from VC1 and VC2.

  • For global views, there will be a single entry point in the object navigator that takes the user to a plug-in instance selector view where the user will be able to switch between the global views of the two plugin instances.