我正在尝试添加数据源data_source_person
支持2种输入方式:
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeString,
Computed: true,
Optional: true,
},
"first_name": {
Type: schema.TypeString,
Computed: true,
Optional: true,
},
},
即,任一值id
or first_name
应该指定,但不能同时指定(它是oneOf
关系)。
如果指定了“id”,则代码将执行GET /people/{ID}
否则必须指定“display_name”,并且在这种情况下GET /people
将被调用,返回一个人员列表,代码将运行一个过滤器来查找具有以下特征的人员的 ID:response.data.people[i].display_name == {providedDisplayName}
.
TF数据源是否支持这种配置(两个属性都是计算的,可选)?
可以在模式中指定该属性既是computed
and optional
,但您更常在资源模式中看到这一点。在一个resource
and data
源模式,optional
表示可选输入,并且computed
表示其值可以在配置期间计算。它们可以共存,因为参数或块可以是输入或输出。例如,这是不可能的。required
是真实的并且computed
确实如此,因为这将是输入和输出,而这些会发生冲突。
此外,根据您问题中的描述,您还想利用ExactlyOneOf
:
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ExactlyOneOf: []string{"id", "first_name"},
},
"first_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ExactlyOneOf: []string{"id", "first_name"},
},
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)