diff --git a/kubernetes/data_source_kubernetes_server_version.go b/kubernetes/data_source_kubernetes_server_version.go index 8637d69956..83a0eb7ada 100644 --- a/kubernetes/data_source_kubernetes_server_version.go +++ b/kubernetes/data_source_kubernetes_server_version.go @@ -3,9 +3,9 @@ package kubernetes import ( "context" + gversion "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - gversion "github.com/hashicorp/go-version" ) func dataSourceKubernetesServerVersion() *schema.Resource { @@ -14,7 +14,52 @@ func dataSourceKubernetesServerVersion() *schema.Resource { Schema: map[string]*schema.Schema{ "version": { Type: schema.TypeString, - Description: "Kubernetes cluster version.", + Description: "Composite Kubernetes server version", + Computed: true, + }, + "build_date": { + Type: schema.TypeString, + Description: "Kubernetes server build date", + Computed: true, + }, + "compiler": { + Type: schema.TypeString, + Description: "Compiler used to build Kubernetes", + Computed: true, + }, + "git_commit": { + Type: schema.TypeString, + Description: "Git commit SHA", + Computed: true, + }, + "git_tree_state": { + Type: schema.TypeString, + Description: "Git commit tree state", + Computed: true, + }, + "git_version": { + Type: schema.TypeString, + Description: "Composite version and git commit sha", + Computed: true, + }, + "major": { + Type: schema.TypeString, + Description: "Major Kubernetes version", + Computed: true, + }, + "minor": { + Type: schema.TypeString, + Description: "Minor Kubernetes version", + Computed: true, + }, + "platform": { + Type: schema.TypeString, + Description: "Platform", + Computed: true, + }, + "go_version": { + Type: schema.TypeString, + Description: "Go compiler version", Computed: true, }, }, @@ -30,11 +75,21 @@ func dataSourceKubernetesServerVersionRead(ctx context.Context, d *schema.Resour if err != nil { return diag.FromErr(err) } + gv, err := gversion.NewVersion(sv.String()) if err != nil { return diag.FromErr(err) } d.SetId(gv.String()) d.Set("version", gv.String()) + d.Set("build_date", sv.BuildDate) + d.Set("compiler", sv.Compiler) + d.Set("git_commit", sv.GitCommit) + d.Set("git_tree_state", sv.GitTreeState) + d.Set("git_version", sv.GitVersion) + d.Set("go_version", sv.GoVersion) + d.Set("major", sv.Major) + d.Set("minor", sv.Minor) + d.Set("platform", sv.Platform) return nil } diff --git a/kubernetes/data_source_kubernetes_server_version_test.go b/kubernetes/data_source_kubernetes_server_version_test.go index 39de25d12f..b384758df9 100644 --- a/kubernetes/data_source_kubernetes_server_version_test.go +++ b/kubernetes/data_source_kubernetes_server_version_test.go @@ -1,8 +1,10 @@ package kubernetes import ( + "fmt" "testing" + gversion "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) @@ -17,11 +19,34 @@ func TestAccKubernetesDataSourceServerVersion_basic(t *testing.T) { { Config: testAccKubernetesDataSourceServerVersionConfig_basic(), Check: func(st *terraform.State) error { - v, err := getClusterVersion() + meta := testAccProvider.Meta() + if meta == nil { + return fmt.Errorf("Provider not initialized, unable to check cluster version") + } + conn, err := meta.(KubeClientsets).MainClientset() + if err != nil { + return err + } + ver, err := conn.ServerVersion() + if err != nil { + return err + } + gver, err := gversion.NewVersion(ver.String()) if err != nil { - t.Fail() + return err } - return resource.TestCheckResourceAttr(dataSourceName, "version", v.String())(st) + return resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr(dataSourceName, "version", gver.String()), + resource.TestCheckResourceAttr(dataSourceName, "build_date", ver.BuildDate), + resource.TestCheckResourceAttr(dataSourceName, "compiler", ver.Compiler), + resource.TestCheckResourceAttr(dataSourceName, "git_commit", ver.GitCommit), + resource.TestCheckResourceAttr(dataSourceName, "git_tree_state", ver.GitTreeState), + resource.TestCheckResourceAttr(dataSourceName, "git_version", ver.GitVersion), + resource.TestCheckResourceAttr(dataSourceName, "major", ver.Major), + resource.TestCheckResourceAttr(dataSourceName, "minor", ver.Minor), + resource.TestCheckResourceAttr(dataSourceName, "platform", ver.Platform), + resource.TestCheckResourceAttr(dataSourceName, "go_version", ver.GoVersion), + )(st) }, }, },