我的地形提供程序中有一个嵌套地图作为属性列表的一部分。在提供程序上运行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的新手,不确定我是否在作业中使用了正确的数据类型。我该怎么办?