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
}