# Name

VixHost_Connect

# Description

    VixHandle
    VixHost_Connect(int apiVersion,
                    VixServiceProvider hostType,
                    const char *hostName,
                    int hostPort,
                    const char *userName,
                    const char *password,
                    VixHostOptions options,
                    VixHandle propertyListHandle,
                    VixEventProc *callbackProc,
                    void *clientData);

Creates a host handle. This handle cannot be shared or reused after disconnect.

# Parameters

apiVersion
  Must be VIX_API_VERSION.
hostType
  With vCenter Server, ESX/ESXi hosts, and VMware Server 2.0, use VIX_SERVICEPROVIDER_VMWARE_VI_SERVER. With VMware Workstation, use VIX_SERVICEPROVIDER_VMWARE_WORKSTATION. With VMware Workstation (shared mode), use VIX_SERVICEPROVIDER_VMWARE_WORKSTATION_SHARED. With VMware Player, use VIX_SERVICEPROVIDER_VMWARE_PLAYER. With VMware Server 1.0.x, use VIX_SERVICEPROVIDER_VMWARE_SERVER.
hostName
  Varies by product platform. With vCenter Server, ESX/ESXi hosts, VMware Workstation (shared mode) and VMware Server 2.0, use a URL of the form "https://<hostName>:<port>/sdk" where <hostName> is either the DNS name or IP address. If missing, <port> may default to 443 (see Remarks below). In VIX API 1.10 and later, you can omit "https://" and "/sdk" specifying just the DNS name or IP address. Credentials are required even for connections made locally. With Workstation, use NULL to connect to the local host. With VMware Server 1.0.x, use the DNS name or IP address for remote connections, or the same as Workstation for local connections.
hostPort
  TCP/IP port on the remote host. With VMware Workstation and VMware Player, use zero for the local host. With ESX/ESXi hosts, VMware Workstation (shared mode) and VMware Server 2.0 you specify port number within the hostName parameter, so this parameter is ignored (see Remarks below).
login
  Username for authentication on the remote machine. With VMware Workstation, VMware Player, and VMware Server 1.0.x, use NULL to authenticate as the current user on local host. With vCenter Server, ESX/ESXi hosts, VMware Workstation (shared mode) and VMware Server 2.0, you must use a valid login.
password
  Password for authentication on the remote machine. With VMware Workstation, VMware Player, and VMware Server 1.0.x, use NULL to authenticate as the current user on local host. With ESX/ESXi, VMware Workstation (shared mode) and VMware Server 2.0, you must use a valid login.
options
  Should be zero. The option VIX_HOSTOPTION_USE_EVENT_PUMP has been deprecated and may be removed from future versions of the VIX API.
propertyListHandle
  Must be VIX_INVALID_HANDLE.
callbackProc
  Optional callback of type VixEventProc.
clientData
  Optional user supplied opaque data to be passed to optional callback.

# Return Value

A job handle. When the job completes, retrieve the Host handle from the job handle using the VIX_PROPERTY_JOB_RESULT_HANDLE property.

# Remarks

- To specify the local host (where the API client runs) with VMware Workstation and VMware Player, pass null values for the hostName, hostPort, userName, and password parameters.
- With vCenter Server, ESX/ESXi hosts, and VMware Server 2.0, the URL for the hostName argument may specify the port. Otherwise an HTTPS connection is attempted on port 443. HTTPS is strongly recommended. Port numbers are set during installation of Server 2.0. The installer's default HTTP and HTTPS values are 8222 and 8333 for Server on Windows, or (if not already in use) 80 and 443 for Server on Linux, and 902 for the automation socket, authd. If connecting to a virtual machine though a firewall, port 902 and the communicating port must be opened to allow guest operations.
- If a VMware ESX host is being managed by a VMware VCenter Server, you should call VixHost_Connect with the hostname or IP address of the VCenter server, not the ESX host. Connecting directly to an ESX host while bypassing its VCenter Server can cause state inconsistency.
- On Windows, this function should not be called multiple times with different service providers in the same process; doing so will result in a VIX_E_WRAPPER_MULTIPLE_SERVICEPROVIDERS error. A single client process can connect to multiple hosts as long as it connects using the same service provider type.
- To enable SSL certificate verification, set the value of the options parameter to include the bit flag specified by VIX_HOSTOPTION_VERIFY_SSL_CERT. This option can also be set in the VMware config file by assigning vix.enableSslCertificateCheck as TRUE or FALSE. The vix.sslCertificateFile config option specifies the path to a file containing CA certificates in PEM format. The vix.sslCertificateDirectory config option can specify a directory containing files that each contain a CA certificate. Upon encountering a SSL validation error, the host handle is not created with a resulting error code of VIX_E_NET_HTTP_SSL_SECURITY.
- The option VIX_HOSTOPTION_USE_EVENT_PUMP has been deprecated and may be removed from future versions of the VIX API.
- With VMware vCenter Server and ESX/ESXi 4.0 hosts, an existing VI API session can be used instead of the username/password pair to authenticate when connecting. To use an existing VI API session, a VI "clone ticket" is required; call the VI API AcquireCloneTicket() method of the SessionManager object to get this ticket. Using the ticket string returned by this method, call VixHost_Connect() with NULL as the 'username' and the ticket as the 'password'.

# Side Effects

None.

# Requirements

vix.h, since VMware Server 1.0

# Example

    #include "vix.h"
    int main(int argc, char * argv[])
    {
       VixHandle hostHandle = VIX_INVALID_HANDLE;
       VixHandle jobHandle = VIX_INVALID_HANDLE;
       VixError err;
       // Connect as current user on local host.
       jobHandle = VixHost_Connect(VIX_API_VERSION,
                                   VIX_SERVICEPROVIDER_VMWARE_VI_SERVER,
                                   "https://viserver.example.com/sdk", // hostName
                                   0, // hostPort
                                   "Administrator", // userName
                                   "adminpass", // password,
                                   0, // options
                                   VIX_INVALID_HANDLE, // propertyListHandle
                                   NULL, // callbackProc
                                   NULL); // clientData

       err = VixJob_Wait(jobHandle,
                         VIX_PROPERTY_JOB_RESULT_HANDLE,
                         &hostHandle,
                         VIX_PROPERTY_NONE);

       if (VIX_OK != err) {
          // Handle the error...
          goto abort;
       }
       Vix_ReleaseHandle(jobHandle);
       // Other code goes here...
       abort:
       Vix_ReleaseHandle(jobHandle);
       VixHost_Disconnect(hostHandle);
    }

Copyright (C) 2007-2018 VMware, Inc. All rights reserved.