在Terraform提供程序中编程嵌套的TypeSet

时间:2019-03-30 08:55:33

标签: dictionary go terraform typeset

我的地形提供程序中有一个嵌套地图作为属性列表的一部分。在提供程序上运行terraform apply时,出现以下错误。

下面是我正在使用的一段代码:

func resourceUplinkSet() *schema.Resource {
    return &schema.Resource{
        Create: resourceUplinkSetCreate,
        Read:   resourceUplinkSetRead,
        Update: resourceUplinkSetUpdate,
        Delete: resourceUplinkSetDelete,

        Schema: map[string]*schema.Schema{
            "name": {
                Type:     schema.TypeString,
                Required: true,
            },
            "port_config_infos": {
                Type:     schema.TypeSet,
                Optional: true,
                Elem: &schema.Resource{
                    Schema: map[string]*schema.Schema{
                        "desired_speed": {
                            Type:     schema.TypeString,
                            Optional: true,
                        },
                        "location": {
                            Type:     schema.TypeSet,
                            Optional: true,
                            Elem: &schema.Resource{
                                Schema: map[string]*schema.Schema{
                                    "location_entries": {
                                        Type:     schema.TypeSet,
                                        Optional: true,
                                        Elem: &schema.Resource{
                                            Schema: map[string]*schema.Schema{
                                                "value": {
                                                    Type:     schema.TypeString,
                                                    Optional: true,
                                                },
                                                "type": {
                                                    Type:     schema.TypeString,
                                                    Optional: true,
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        },
                    },
                },
            },
        },
    }
}

预期结果: Terraform Apply创建指定的资源。

实际结果: Terraform崩溃并显示以下消息。

panic: interface conversion: interface {} is map[string]interface {}, not ov.PortConfigInfos 指向下面显示的分配portConfigInfos[i] = raw.(ov.PortConfigInfos)

我正在尝试使用for循环设置“ port_config_infos”的值:

portConfigInfosList := d.Get("port_config_infos").(*schema.Set).List()
portConfigInfos := make([]ov.PortConfigInfos,len(portConfigInfosList))

        for i,raw := range portConfigInfosList {
                portConfigInfos[i] = raw.(ov.PortConfigInfos)
        }
        uplinkSet.PortConfigInfos = portConfigInfos

我是Terraform的新手,不确定我是否在作业中使用了正确的数据类型。我该怎么办?

0 个答案:

没有答案