aequitas / terraform-provider-transip

Terraform provider to manage Transip resources
https://registry.terraform.io/providers/aequitas/transip/latest/docs
MIT License
35 stars 16 forks source link

SOAP Fault 302: The Vps does not exist. #7

Closed angelosleebos closed 4 years ago

angelosleebos commented 4 years ago

Hi! Bij het uitvoeren van je terraform script krijg ik een foutmelding dat de naam van de VPS niet bestaat. Als ik lees in de transIP API documentatie wordt aan gegeven dat name niet required is en in uw terraform source (resource_transip_vps.go) staat dat dit wel verplicht is.

"name": {
    Required: true,
    Type:     schema.TypeString,
    ForceNew: true,
},

De Terraform config:

provider "transip" {
  account_name = "xxx"
  private_key = file("keypair.key")
}
resource "transip_vps" "test999" {
  name = "vps9999"
  product_name = "vps-bladevps-x1"
  operating_system = "ubuntu-18.04"
}

Output:

$ terraform apply

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # transip_vps.test will be created
  + resource "transip_vps" "test" {
      + availability_zone  = (known after apply)
      + disk_size          = (known after apply)
      + id                 = (known after apply)
      + ipv4_address       = (known after apply)
      + ipv6_address       = (known after apply)
      + is_blocked         = (known after apply)
      + is_customer_locked = (known after apply)
      + mac_address        = (known after apply)
      + memory_size        = (known after apply)
      + name               = "vps9999"
      + operating_system   = "ubuntu-18.04"
      + processors         = (known after apply)
      + product_name       = "vps-bladevps-x1"
      + status             = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

transip_vps.test: Creating...

Error: failed to lookup VPS "vps9999": SOAP Fault 302: The Vps 'vps9999' does not exist.

  on main.tf line 12, in resource "transip_vps" "test999":
  12: resource "transip_vps" "test999" {

Wat er gebeurd is dat er gezocht wordt naar een vps naam die nog niet bestaat omdat deze eerst nog uitgerold dient te worden.

Graag hoor ik wat u precies bedoelt met de variabele "name".

aequitas commented 4 years ago

Name is de naam die de VPS behoort te krijgen. Door deze resource te gebruiken wordt een VPS met deze resource aangemaakt.

Zou je de volledige output van de terraform apply kunnen pasten zodat ik een beter beeld kan krijgen wanneer het fout gaat?

angelosleebos commented 4 years ago

Na het ontvangen van de foutmelding worden de VPS wel degelijk aangemaakt binnen transIP.

angelosleebos commented 4 years ago

Name is de naam die de VPS behoort te krijgen. Door deze resource te gebruiken wordt een VPS met deze resource aangemaakt.

Zou je de volledige output van de terraform apply kunnen pasten zodat ik een beter beeld kan krijgen wanneer het fout gaat?

Als goed is de output te lezen in de issue nu.

aequitas commented 4 years ago

Dan denk ik dat we te maken hebben met een race condition. Dat de code te snel probeert de vps uit te lezen nadat ie aangemaakt is.

Helaas is dit stukje code minder goed getest omdat je vps'en slechts per maand kan bestellen en dit vrij snel heel kostbaar wordt voor mij om te testen.

Ik kan een retry mechanisme inbouwen die dit probleem tegen zou moeten gaan. Maar ik kan het zelf niet uitgebreid testen.

angelosleebos commented 4 years ago

Bedankt voor je snelle reacties, voor nu is dit voor mij voldoende.