You must provide information about the vCenter Server instance to which you connect an extension. Set the details of the connection to vCenter Server in the client-side stub of the extension.
Note: If you deploy your extension using the Open Virtualization Format (OVF), you can integrate it with the vCenter Extension vService. The vCenter Extension vService automates the process of registering extension with
vCenter Server, so you do not need to provide any connection parameters. See
Integrating an Extension with the vCenter Extension vService.
To connect an extension to vCenter Server, provide the following information to the client-side stub of the connection.
- A username and password for a vCenter Server administrator account, if you do not use the vCenter Extension vService
- The extension key for the extension
- A reference to the SessionManager instance in the vCenter Server
The EAM Sample Solution defines the connection to vCenter Server in the VimConnection class.
The Manager class performs the following functions.
- Implements the VimConnection class to establish the connection to vCenter Server when the EAM Sample Solution starts.
- Uses the Spring framework to obtain the connection information from the eamri.properties file that you configure when you set up the EAM Sample Solution.
- Passes the connection property values to VimConnection.
Procedure
- Create an instance of the ManagedObjectReference data object to define the connection to the extension.
The
VimConnection class creates a
ManagedObjectReference object of type
ServiceInstance, named
_siRef.
public VimConnection(String host, int port) {
[...]
_siRef = new ManagedObjectReference();
_siRef.setType("ServiceInstance");
_siRef.setValue("ServiceInstance");
}
- Define methods to get and set the vCenter Server host, ports, username, password, connection timeout, and session cookie.
The
VimConnection constructor defines methods to obtain the host, ports, username, password, connection timeout, and session cookie from the information that you set in the
eamri.properties file.
- Connect to vCenter Server by obtaining the SessionManager managed object for the vCenter Server.
VimConnection.java defines a method named
connect(). The
connect() method defines a standard connection to
vCenter Server that uses WSDL. The following segment shows the calls to the
SessionManager.login() and
SessionManager.loginExtensionByCertificate() methods that establish the connection to
vCenter Server. The
_stub variable is an instance of
VimPortType,
_sc is a
ServiceContent object, and
_siRef is the
ManagedObjectReference object of type
ServiceInstance.
private synchronized void connect() {
[...]
try {
[...]
VimService locator = new VimService(wsdlURL, new QName("urn:vim25Service",
"VimService"));
_stub = locator.getVimPort();
[...]
_sc = _stub.retrieveServiceContent(_siRef);
ManagedObjectReference sessionManager = _sc.getSessionManager();
if (_extensionKey == null) {
_stub.login(sessionManager, _username, _password, null);
}
else {
_stub.loginExtensionByCertificate(sessionManager, _extensionKey, null);
}
[...]
_connectionStatus = ConnectionStatus.Connected;
} catch (Exception e) {
_logger.error(e, e);
}
}
- Register the extension by calling the ExtensionManager.registerExtension() method.
VimConnection defines a
registerExtension() method that implements
ExtensionManager.registerExtension().
Manager calls
VimConnection.registerExtension() after it has set the properties for the extension.
public void registerExtension(Extension ex) {
try {
Extension findExtension = _stub.findExtension(_sc.getExtensionManager(),
ex.getKey());
if (findExtension == null) {
_stub.registerExtension(_sc.getExtensionManager(), ex);
} else {
_stub.updateExtension(_sc.getExtensionManager(), ex);
}
_stub.setExtensionCertificate(_sc.getExtensionManager(),
ex.getKey(), null);
} catch (Exception e) {
_logger.error(e, e);
}
}
Results
You registered an extension with vCenter Server.
What to do next
Provide an extension key with which to register the extension with vCenter Server.