func NewConnectorManager()

in pkg/nsxt/connector_manager.go [62:117]


func NewConnectorManager(nsxtConfig *config.Config) (*ConnectorManager, error) {
	cm := &ConnectorManager{}
	if nsxtConfig == nil {
		return cm, nil
	}
	cm.config = nsxtConfig
	url := fmt.Sprintf("https://%s", nsxtConfig.Host)
	var securityCtx *core.SecurityContextImpl
	securityContextNeeded := true
	if len(nsxtConfig.ClientAuthCertFile) > 0 {
		securityContextNeeded = false
	}

	if securityContextNeeded {
		securityCtx = core.NewSecurityContextImpl()
		if len(nsxtConfig.VMCAccessToken) > 0 {
			if nsxtConfig.VMCAuthHost == "" {
				return nil, fmt.Errorf("vmc auth host must be provided if auth token is provided")
			}

			apiToken, err := getAPIToken(nsxtConfig.VMCAuthHost, nsxtConfig.VMCAccessToken)
			if err != nil {
				return nil, err
			}

			securityCtx.SetProperty(security.AUTHENTICATION_SCHEME_ID, security.OAUTH_SCHEME_ID)
			securityCtx.SetProperty(security.ACCESS_TOKEN, apiToken)
		} else if nsxtConfig.User != "" && nsxtConfig.Password != "" {
			securityCtx.SetProperty(security.AUTHENTICATION_SCHEME_ID, security.USER_PASSWORD_SCHEME_ID)
			securityCtx.SetProperty(security.USER_KEY, nsxtConfig.User)
			securityCtx.SetProperty(security.PASSWORD_KEY, nsxtConfig.Password)
		}
	}

	tlsConfig, err := getConnectorTLSConfig(nsxtConfig.InsecureFlag, nsxtConfig.ClientAuthCertFile, nsxtConfig.ClientAuthKeyFile, nsxtConfig.CAFile)
	if err != nil {
		return nil, err
	}
	httpClient := http.Client{
		Transport: &http.Transport{
			Proxy:           http.ProxyFromEnvironment,
			TLSClientConfig: tlsConfig,
		},
	}

	connector := client.NewRestConnector(url, httpClient)
	if securityCtx != nil {
		connector.SetSecurityContext(securityCtx)
	}
	if nsxtConfig.RemoteAuth {
		connector.AddRequestProcessor(newRemoteBasicAuthHeaderProcessor())
	}
	cm.connector = connector

	return cm, nil
}