Skip to content

Provider should throw an error if unable to create AVI client #604

@jakauppila

Description

@jakauppila

Describe the bug

If you attempt to utilize the provider but don't define a host or credentials, it continues on despite failing to create an aviClient during provider instantiation.

Reproduction steps

  1. Configure this minimal main.tf Terraform configuration
terraform {
  required_providers {
    avi = {
      source  = "vmware/avi"
      version = "30.2.1"
    }
  }
}

provider "avi" {
  avi_tenant = "admin"
}

data "avi_certificatemanagementprofile" "profile" {
  name = "LetsEncryptCertificateManagementProfile"
}
  1. Terraform init
  2. Terraform apply
  3. Provider attempts to execute on the resources contained within configuration

Debug Logs:

[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:46.484481   32924 avisession.go:1632] Controller Host is not valid."
[INFO]  provider.terraform-provider-avi_v30.2.1.exe: 2024/08/06 23:08:46 Avi Client created for user admin tenant admin version 18.2.8: timestamp=2024-08-06T23:08:46.487-0500
[DEBUG] Resource instance state not found for node "data.avi_certificatemanagementprofile.profile", instance data.avi_certificatemanagementprofile.profile
[DEBUG] ReferenceTransformer: "data.avi_certificatemanagementprofile.profile" references: []
data.avi_certificatemanagementprofile.profile: Reading...
[INFO]  provider.terraform-provider-avi_v30.2.1.exe: 2024/08/06 23:08:46 [DEBUG] APIRead reading object with objType certificatemanagementprofile id: timestamp=2024-08-06T23:08:46.490-0500
[INFO]  provider.terraform-provider-avi_v30.2.1.exe: 2024/08/06 23:08:46 [DEBUG] APIRead using name LetsEncryptCertificateManagementProfile: timestamp=2024-08-06T23:08:46.490-0500
[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:46.490035   32924 avisession.go:829] Client error for URI: login. Error: Post \"https:///login\": http: no Host in request URL"
[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:46.490035   32924 avisession.go:832] Error while dumping request. Still retrying."
[WARN]  unexpected data:
  registry.terraform.io/vmware/avi:stderr=
  | E0806 23:08:46.490035   32924 avisession.go:1173] http: no Host in request URL
  |
  | E0806 23:08:46.490035   32924 avisession.go:1200] CheckControllerStatus Error while generating http request https:////api/cluster/status Get "https:////api/cluster/status": http: no Host in request URL

[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:49.498390   32924 avisession.go:1210] CheckControllerStatus Controller https:////api/cluster/status Retrying. round 0..!"
[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:49.498390   32924 avisession.go:1200] CheckControllerStatus Error while generating http request https:////api/cluster/status Get \"https:////api/cluster/status\": http: no Host in request URL"
data.avi_certificatemanagementprofile.profile: Still reading... [10s elapsed]
[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:57.509506   32924 avisession.go:1210] CheckControllerStatus Controller https:////api/cluster/status Retrying. round 1..!"
[WARN]  unexpected data: registry.terraform.io/vmware/avi:stderr="E0806 23:08:57.509737   32924 avisession.go:1200] CheckControllerStatus Error while generating http request https:////api/cluster/status Get \"https:////api/cluster/status\": http: no Host in request URL"

Expected behavior

Provider should throw an error after it fails to create an aviClient at

aviClient, err := clients.NewAviClient(
config.Controller, config.Username,
session.SetPassword(config.Password),
session.SetTenant(config.Tenant),
session.SetVersion(config.Version),
session.SetAuthToken(config.AuthToken),
session.SetInsecure, session.SetTimeout(config.Timeout),
session.SetCSPHost(config.CSPHost),
session.SetCSPToken(config.CSPToken),
session.SetLazyAuthentication(true))
log.Printf("Avi Client created for user %s tenant %s version %s\n",
config.Username, config.Tenant, config.Version)
return aviClient, err

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions