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.