vsphere/config.go
func (c *Config) LoadVimClient() (*govmomi.Client, error) {
	client := new(vim25.Client)
	ok, err := c.restoreVimClient(client)
	if err != nil {
		return nil, err
	}

	if !ok || !client.Valid() {
		log.Println("[DEBUG] Cached SOAP client session data not valid or persistence not enabled, new session necessary")
		return nil, nil
	}

	m := session.NewManager(client)
	u, err := m.UserSession(context.TODO())
	if err != nil {
		if soap.IsSoapFault(err) {
			fault := soap.ToSoapFault(err).VimFault()
			// If the PropertyCollector is not found, the saved session for this URL is not valid
			if _, ok := fault.(types.ManagedObjectNotFound); ok {
				log.Println("[DEBUG] Cached SOAP client session missing property collector, new session necessary")
				return nil, nil
			}
		}

		return nil, err
	}

	// If the session is nil, the client is not authenticated
	if u == nil {
		log.Println("[DEBUG] Unauthenticated session, new session necessary")
		return nil, nil
	}

	log.Println("[DEBUG] Cached SOAP client session loaded successfully")
	return &govmomi.Client{
		Client:         client,
		SessionManager: m,
	}, nil
}
func (c *Config) LoadVimClient() (*govmomi.Client, error) {
	client := new(vim25.Client)
	ok, err := c.restoreVimClient(client)
	if err != nil {
		return nil, err
	}

	if !ok || !client.Valid() {
		log.Println("[DEBUG] Cached SOAP client session data not valid or persistence not enabled, new session necessary")
		return nil, nil
	}

	m := session.NewManager(client)
	u, err := m.UserSession(context.TODO())
	if err != nil {
		if soap.IsSoapFault(err) {
			fault := soap.ToSoapFault(err).VimFault()
			// If the PropertyCollector is not found, the saved session for this URL is not valid
			if _, ok := fault.(types.ManagedObjectNotFound); ok {
				log.Println("[DEBUG] Cached SOAP client session missing property collector, new session necessary")
				return nil, nil
			}
		}

		return nil, err
	}

	// If the session is nil, the client is not authenticated
	if u == nil {
		log.Println("[DEBUG] Unauthenticated session, new session necessary")
		return nil, nil
	}

	log.Println("[DEBUG] Cached SOAP client session loaded successfully")
	return &govmomi.Client{
		Client:         client,
		SessionManager: m,
	}, nil
}
func ( c * Config ) LoadVimClient ( ) ( * govmomi . Client , error ) { client := new ( vim25 . Client ) ok , err := c . restoreVimClient ( client ) if err != nil { return nil , err } if ! ok || ! client . Valid ( ) { log . Println ( " " ) return nil , nil } m := session . NewManager ( client ) u , err := m . UserSession ( context . TODO ( ) ) if err != nil { if soap . IsSoapFault ( err ) { fault := soap . ToSoapFault ( err ) . VimFault ( ) // If the PropertyCollector is not found, the saved session for this URL is not valid if _ , ok := fault . ( types . ManagedObjectNotFound ) ; ok { log . Println ( " " ) return nil , nil } } return nil , err } // If the session is nil, the client is not authenticated if u == nil { log . Println ( " " ) return nil , nil } log . Println ( " " ) return & govmomi . Client { Client : client , SessionManager : m , } , nil }
// LoadVimClient loads a saved vSphere SOAP API session from disk, previously
// saved by SaveVimClient, checking it for validity before returning it. A nil
// client means that the session is no longer valid and should be created from
// scratch.
//
// Note the logic in this function has been largely adapted from govc and is
// designed to be compatible with it - if a session has already been saved with
// govc, Terraform will attempt to use that session first.
LoadVimClient loads a saved vSphere SOAP API session from disk previously saved by SaveVimClient checking it for validity before returning it . A nil client means that the session is no longer valid and should be created from scratch . Note the logic in this function has been largely adapted from govc and is designed to be compatible with it - if a session has already been saved with govc Terraform will attempt to use that session first .