登录
首页 >  Golang >  Go问答

Terraform Provider-使用 schema.SchemaValidateDiagFunc 类型替代 validation.StringInSlice 类型(schema.SchemaValidateFunc) 来指定拉取的 SDK 版本

来源:stackoverflow

时间:2024-02-20 23:30:24 309浏览 收藏

一分耕耘,一分收获!既然都打开这篇《Terraform Provider-使用 schema.SchemaValidateDiagFunc 类型替代 validation.StringInSlice 类型(schema.SchemaValidateFunc) 来指定拉取的 SDK 版本》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

由于这个问题,对于提供商来说,您似乎必须获取最新版本的 sdk(发布时为 2.4.4)。这篇文章有很多关于如何导入特定版本的包的信息,但肯定每个提供商编写者都不会手动拉取最新版本的 sdk(或者他们是)?

我是 go/terraform 的新手,所以也许我遗漏了一些明显的东西,但我找到的提供程序(包括官方示例)有类似的内容:

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

当前版本不是 2 - 它是 2.4.4。现在我知道这些是本地路径,但令我困惑的是,当我运行 go get 之类的东西时,它会为我拉下这些路径。我尝试这样做:

"github.com/hashicorp/terraform-plugin-sdk/v2.4.4/helper/schema"

但是 go get 非常不喜欢这样。 go get 如何找到这些软件包版本?是否有一种导入语法可以让我获得最新版本或允许我更精细?我还没有找到一个好方法来判断运行 go get 后我拥有的 sdk 版本,但基于此错误消息:

看起来我有 2.0,因为据我了解,该错误已在较新版本的 sdk 中修复。


解决方案


我明白了。该行为由 go.mod 文件控制。

在那里你会发现:

require (
    github.com/hashicorp/terraform-plugin-sdk v1.14.0 // indirect
    github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.1

正如 @jimb 所提到的,v2 是插件的 major versionv2.0.1 是 github 标签。将其更改为 v2.4.4 可以获得所需的行为。

终于介绍完啦!小伙伴们,这篇关于《Terraform Provider-使用 schema.SchemaValidateDiagFunc 类型替代 validation.StringInSlice 类型(schema.SchemaValidateFunc) 来指定拉取的 SDK 版本》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>