Схема провайдера Terraform с TypeSet и непоследовательной записью

Я нахожу некоторые несоответствия, когда файл состояния записывается после создания провайдера.

Это мой ресурс:

      package provider

import (
    "context"
    "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
    "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func resourceTest() *schema.Resource {
    return &schema.Resource{
        CreateContext: resourceTestCreate,
        ReadContext:   resourceTestRead,
        UpdateContext: resourceTestUpdate,
        DeleteContext: resourceTestDelete,
        Schema: map[string]*schema.Schema{
            "name": &schema.Schema{
                Type:     schema.TypeString,
                Required: true,
            },
            "kids": &schema.Schema{
                Type:     schema.TypeSet,
                Required: true,
                Elem: &schema.Schema{
                    Type: schema.TypeString,
                },
            },
        },
    }
}

func resourceTestCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
    d.SetId("id")
    d.Set("name", "AnakinCreate")
    d.Set("kids", []string{"LukeCreate"})
    return nil
}

func resourceTestRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
    d.Set("name", "AnakinRead")
    d.Set("kids", []string{"LukeRead"})
    return nil
}

func resourceTestUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
    d.Set("name", "AnakinUpdate")
    d.Set("kids", []string{"LukeUpdate"})
    return nil
}

func resourceTestDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
    d.SetId("")
    return nil
}

и это мое определение:

      resource "hue_test" "test" {
  name = "Anakin"
  kids = [
    "Luke"
  ]
}

когда я запускаю приложение в первый раз, я получаю это в состоянии "name": "AnakinCreate" (как и ожидалось), но "kids": ["Luke"] вместо LukeCreate.

после обновления (читать) я получаю AnakinRead и LukeRead как и ожидалось.

когда я снова применяю, он обнаруживает дрейф, как и ожидалось.

после подачи заявления у государства есть "name": "AnakinUpdate" (как и ожидалось), но `" kids ": [" Luke "] instead ofLukeUpdate`.

Пример минималистичен, моя структура намного сложнее, но если я смогу устранить это несоответствие, я, вероятно, смогу решить свою исходную проблему.

Спасибо.

      

0 ответов

Другие вопросы по тегам