【发布时间】:2020-07-08 20:36:57
【问题描述】:
我目前正在为 Jumpcloud 开发自定义 Terraform Provider,并且在配置自定义数据源时遇到了一些挑战。我看到资源架构需要创建、读取、更新和删除。
我只是想在 Terraform 中运行 API 查询,以便我可以返回用户列表并在 for 循环中使用这些用户。
下面是我标记为 schema.Resource 的 API 调用
func userquery() *schema.Resource {
apiKey := ""
userGroupID := ""
contentType := "application/json"
accept := "application/json"
// Instantiate the API client
client := jcapiv2.NewAPIClient(jcapiv2.NewConfiguration())
// Set up the API key via context
auth := context.WithValue(context.TODO(), jcapiv2.ContextAPIKey, jcapiv2.APIKey{
Key: apiKey,
})
// Make an API call to retrieve a specific user group by ID
userGroup, res, err := client.UserGroupsApi.GroupsUserGet(auth, userGroupID, contentType, accept, nil)
if err != nil {
fmt.Printf("Error retrieving user group %s: %s - response = %+v\n", userGroupID, err, res)
} else {
fmt.Printf("Details for User group %s: %+v\n", userGroupID, userGroup)
}
return nil
}
这是映射
ResourcesMap: map[string]*schema.Resource{
"jumpcloud_user": resourceUser(),
"jumpcloud_user_group": resourceUserGroup(),
"jumpcloud_user_group_membership": resourceUserGroupMembership(),
"jumpcloud_user_query": userquery(),
},
这是我收到的错误。有趣的是,这从 API 调用中正确返回了名称,但是仍然存在错误...
【问题讨论】:
-
这看起来像您向资源添加了额外的函数和参数,而不是创建新的数据源。
-
是的,我不确定如何在提供程序中添加实际数据源
标签: go schema terraform terraform-provider-aws terraform-provider-azure