diff --git a/tencentcloud/internal/helper/transform.go b/tencentcloud/internal/helper/transform.go index bec3864562..d4753ad1bb 100644 --- a/tencentcloud/internal/helper/transform.go +++ b/tencentcloud/internal/helper/transform.go @@ -153,6 +153,28 @@ func InterfacesIntInt64Point(configured []interface{}) []*int64 { return vs } +func Int64Slice2Int64PointerSlice(in []int64) []*int64 { + if in == nil { + return nil + } + ret := make([]*int64, len(in)) + for i, v := range in { + ret[i] = Int64(v) + } + return ret +} + +func UInt64Slice2UInt64PointerSlice(in []uint64) []*uint64 { + if in == nil { + return nil + } + ret := make([]*uint64, len(in)) + for i, v := range in { + ret[i] = Uint64(v) + } + return ret +} + func InterfacesUint64Point(configured []interface{}) []*uint64 { vs := make([]*uint64, 0, len(configured)) for _, v := range configured { @@ -169,6 +191,28 @@ func InterfacesIntUInt64Point(configured []interface{}) []*uint64 { return vs } +func Float64Slice2Float64PointerSlice(in []float64) []*float64 { + if in == nil { + return nil + } + ret := make([]*float64, len(in)) + for i, v := range in { + ret[i] = Float64(v) + } + return ret +} + +func BoolSlice2BoolPointerSlice(in []bool) []*bool { + if in == nil { + return nil + } + ret := make([]*bool, len(in)) + for i, v := range in { + ret[i] = Bool(v) + } + return ret +} + // StringsInterfaces Flatten to an array of raw strings and returns a []interface{} func StringsInterfaces(list []*string) []interface{} { vs := make([]interface{}, 0, len(list)) diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_charts.go b/tencentcloud/services/tke/data_source_tc_kubernetes_charts.go index 5544cfffa7..d32d919126 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_charts.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_charts.go @@ -1,14 +1,16 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" "encoding/json" + "strings" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -21,21 +23,19 @@ func DataSourceTencentCloudKubernetesCharts() *schema.Resource { Optional: true, Description: "Kind of app chart. Available values: `log`, `scheduler`, `network`, `storage`, `monitor`, `dns`, `image`, `other`, `invisible`.", }, + "arch": { Type: schema.TypeString, Optional: true, Description: "Operation system app supported. Available values: `arm32`, `arm64`, `amd64`.", }, + "cluster_type": { Type: schema.TypeString, Optional: true, Description: "Cluster type. Available values: `tke`, `eks`.", }, - "result_output_file": { - Type: schema.TypeString, - Optional: true, - Description: "Used to save results.", - }, + "chart_list": { Type: schema.TypeList, Computed: true, @@ -60,78 +60,100 @@ func DataSourceTencentCloudKubernetesCharts() *schema.Resource { }, }, }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, }, } } func dataSourceTencentCloudKubernetesChartsRead(d *schema.ResourceData, meta interface{}) error { defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_charts.read")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() - service := TkeService{client: client} + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( - kind = d.Get("kind").(string) - arch = d.Get("arch").(string) - clusterType = d.Get("cluster_type").(string) + kind string + arch string + clusterType string ) - - request := tke.NewGetTkeAppChartListRequest() - if kind != "" { - request.Kind = &kind + if v, ok := d.GetOk("kind"); ok { + kind = v.(string) + } + if v, ok := d.GetOk("arch"); ok { + arch = v.(string) + } + if v, ok := d.GetOk("cluster_type"); ok { + clusterType = v.(string) + } + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("kind"); ok { + paramMap["Kind"] = helper.String(v.(string)) } - if arch != "" { - request.Arch = &arch + if v, ok := d.GetOk("arch"); ok { + paramMap["Arch"] = helper.String(v.(string)) } - if clusterType != "" { - request.ClusterType = &clusterType + if v, ok := d.GetOk("cluster_type"); ok { + paramMap["ClusterType"] = helper.String(v.(string)) } - response, err := service.GetTkeAppChartList(ctx, request) + var respData []*tke.AppChart + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeKubernetesChartsByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) if err != nil { return err } - chartList := make([]interface{}, 0) + appChartsList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, appCharts := range respData { + appChartsMap := map[string]interface{}{} - for i := range response { - item := response[i] - chart := map[string]interface{}{ - "name": item.Name, - "latest_version": item.LatestVersion, - } + if appCharts.Name != nil { + appChartsMap["name"] = appCharts.Name + } - label := make(map[string]interface{}) + if appCharts.LatestVersion != nil { + appChartsMap["latest_version"] = appCharts.LatestVersion + } - if err := json.Unmarshal([]byte(*item.Label), &label); err != nil { - return err - } + if appCharts.Label != nil { + tmpMap := make(map[string]interface{}) + if err := json.Unmarshal([]byte(*appCharts.Label), &tmpMap); err != nil { + return err + } + appChartsMap["label"] = tmpMap + } - chart["label"] = label + appChartsList = append(appChartsList, appChartsMap) + } - chartList = append(chartList, chart) + _ = d.Set("chart_list", appChartsList) } - err = d.Set("chart_list", chartList) - - if err != nil { - return err - } + d.SetId(strings.Join([]string{kind, arch, clusterType}, tccommon.FILED_SP)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - err := tccommon.WriteToFile(output.(string), chartList) - if err != nil { - return err + if e := tccommon.WriteToFile(output.(string), appChartsList); e != nil { + return e } } - ids := []string{kind, arch, clusterType} - d.SetId("app_chart_" + helper.DataResourceIdsHash(ids)) - return nil } diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_charts_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_charts_extension.go new file mode 100644 index 0000000000..7fdf745226 --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_charts_extension.go @@ -0,0 +1 @@ +package tke diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options.go index 77e8d3b905..ba815f897a 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options.go @@ -1,13 +1,15 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - kubernetes "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func DataSourceTencentCloudKubernetesClusterAuthenticationOptions() *schema.Resource { @@ -15,14 +17,14 @@ func DataSourceTencentCloudKubernetesClusterAuthenticationOptions() *schema.Reso Read: dataSourceTencentCloudKubernetesClusterAuthenticationOptionsRead, Schema: map[string]*schema.Schema{ "cluster_id": { - Required: true, Type: schema.TypeString, + Required: true, Description: "Cluster ID.", }, "service_accounts": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "ServiceAccount authentication configuration. Note: this field may return `null`, indicating that no valid values can be obtained.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -51,14 +53,14 @@ func DataSourceTencentCloudKubernetesClusterAuthenticationOptions() *schema.Reso }, "latest_operation_state": { - Computed: true, Type: schema.TypeString, + Computed: true, Description: "Result of the last modification. Values: `Updating`, `Success`, `Failed` or `TimeOut`. Note: this field may return `null`, indicating that no valid values can be obtained.", }, "oidc_config": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "OIDC authentication configurations. Note: This field may return `null`, indicating that no valid value can be obtained.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -68,12 +70,12 @@ func DataSourceTencentCloudKubernetesClusterAuthenticationOptions() *schema.Reso Description: "Creating an identity provider. Note: This field may return `null`, indicating that no valid value can be obtained.", }, "auto_create_client_id": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Computed: true, + Description: "Creating ClientId of the identity provider. Note: This field may return `null`, indicating that no valid value can be obtained.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Computed: true, - Description: "Creating ClientId of the identity provider. Note: This field may return `null`, indicating that no valid value can be obtained.", }, "auto_install_pod_identity_webhook_addon": { Type: schema.TypeBool, @@ -97,84 +99,87 @@ func dataSourceTencentCloudKubernetesClusterAuthenticationOptionsRead(d *schema. defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_cluster_authentication_options.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - clusterId := d.Get("cluster_id").(string) + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( - options *kubernetes.ServiceAccountAuthenticationOptions - oidcConfig *kubernetes.OIDCConfigAuthenticationOptions - state string - e error + clusterId string ) + if v, ok := d.GetOk("cluster_id"); ok { + clusterId = v.(string) + } + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("cluster_id"); ok { + paramMap["ClusterId"] = helper.String(v.(string)) + } + var respData *tke.DescribeClusterAuthenticationOptionsResponseParams err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - options, state, oidcConfig, e = service.DescribeClusterAuthenticationOptions(ctx, clusterId) + result, e := service.DescribeKubernetesClusterAuthenticationOptionsByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } + respData = result return nil }) if err != nil { return err } - tmpList := make([]map[string]interface{}, 0) - - if options != nil { - serviceAccountAuthenticationOptionsMap := map[string]interface{}{} + serviceAccountsMap := map[string]interface{}{} - if options.UseTKEDefault != nil { - serviceAccountAuthenticationOptionsMap["use_tke_default"] = options.UseTKEDefault + if respData.ServiceAccounts != nil { + if respData.ServiceAccounts.UseTKEDefault != nil { + serviceAccountsMap["use_tke_default"] = respData.ServiceAccounts.UseTKEDefault } - if options.Issuer != nil { - serviceAccountAuthenticationOptionsMap["issuer"] = options.Issuer + if respData.ServiceAccounts.Issuer != nil { + serviceAccountsMap["issuer"] = respData.ServiceAccounts.Issuer } - if options.JWKSURI != nil { - serviceAccountAuthenticationOptionsMap["jwks_uri"] = options.JWKSURI + if respData.ServiceAccounts.JWKSURI != nil { + serviceAccountsMap["jwks_uri"] = respData.ServiceAccounts.JWKSURI } - if options.AutoCreateDiscoveryAnonymousAuth != nil { - serviceAccountAuthenticationOptionsMap["auto_create_discovery_anonymous_auth"] = options.AutoCreateDiscoveryAnonymousAuth + if respData.ServiceAccounts.AutoCreateDiscoveryAnonymousAuth != nil { + serviceAccountsMap["auto_create_discovery_anonymous_auth"] = respData.ServiceAccounts.AutoCreateDiscoveryAnonymousAuth } - tmpList = append(tmpList, serviceAccountAuthenticationOptionsMap) - _ = d.Set("service_accounts", []interface{}{serviceAccountAuthenticationOptionsMap}) + + _ = d.Set("service_accounts", []interface{}{serviceAccountsMap}) } - if state != "" { - _ = d.Set("latest_operation_state", state) + if respData.LatestOperationState != nil { + _ = d.Set("latest_operation_state", respData.LatestOperationState) } - if oidcConfig != nil { - oIDCConfigAuthenticationOptionsMap := map[string]interface{}{} + oIDCConfigMap := map[string]interface{}{} - if oidcConfig.AutoCreateOIDCConfig != nil { - oIDCConfigAuthenticationOptionsMap["auto_create_oidc_config"] = oidcConfig.AutoCreateOIDCConfig + if respData.OIDCConfig != nil { + if respData.OIDCConfig.AutoCreateOIDCConfig != nil { + oIDCConfigMap["auto_create_oidc_config"] = respData.OIDCConfig.AutoCreateOIDCConfig } - if oidcConfig.AutoCreateClientId != nil { - oIDCConfigAuthenticationOptionsMap["auto_create_client_id"] = oidcConfig.AutoCreateClientId + if respData.OIDCConfig.AutoCreateClientId != nil { + oIDCConfigMap["auto_create_client_id"] = respData.OIDCConfig.AutoCreateClientId } - if oidcConfig.AutoInstallPodIdentityWebhookAddon != nil { - oIDCConfigAuthenticationOptionsMap["auto_install_pod_identity_webhook_addon"] = oidcConfig.AutoInstallPodIdentityWebhookAddon + if respData.OIDCConfig.AutoInstallPodIdentityWebhookAddon != nil { + oIDCConfigMap["auto_install_pod_identity_webhook_addon"] = respData.OIDCConfig.AutoInstallPodIdentityWebhookAddon } - tmpList = append(tmpList, oIDCConfigAuthenticationOptionsMap) - _ = d.Set("oidc_config", []interface{}{oIDCConfigAuthenticationOptionsMap}) + + _ = d.Set("oidc_config", []interface{}{oIDCConfigMap}) } d.SetId(clusterId) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), dataSourceTencentCloudKubernetesClusterAuthenticationOptionsReadOutputContent(ctx)); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options_extension.go new file mode 100644 index 0000000000..5eccd67bec --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_authentication_options_extension.go @@ -0,0 +1,43 @@ +package tke + +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" +) + +func dataSourceTencentCloudKubernetesClusterAuthenticationOptionsReadOutputContent(ctx context.Context) interface{} { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + + var tmpList []map[string]interface{} + + if v, ok := d.GetOk("service_accounts"); ok { + if vList, isList := v.([]interface{}); isList && len(vList) > 0 { + if vList[0] == nil { + tmpList = append(tmpList, map[string]interface{}{}) + } else { + tmpList = append(tmpList, vList[0].(map[string]interface{})) + } + } + } + if v, ok := d.GetOk("oidc_config"); ok { + if vList, isList := v.([]interface{}); isList && len(vList) > 0 { + if vList[0] == nil { + tmpList = append(tmpList, map[string]interface{}{}) + } else { + vMap := vList[0].(map[string]interface{}) + autoCreateClientID, _ := vMap["auto_create_client_id"].(*schema.Set) + vMap["auto_create_client_id"] = autoCreateClientID.List() + tmpList = append(tmpList, vMap) + } + } + } + + return tmpList +} diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names.go index ac73bd4451..c394cd3fb8 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names.go @@ -1,19 +1,21 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" + "strings" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func DataSourceTencentCloudKubernetesClusterCommonNames() *schema.Resource { return &schema.Resource{ - Read: datasourceTencentCloudKubernetesClusterCommonNamesRead, + Read: dataSourceTencentCloudKubernetesClusterCommonNamesRead, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, @@ -23,23 +25,25 @@ func DataSourceTencentCloudKubernetesClusterCommonNames() *schema.Resource { Optional: true, Description: "Cluster ID.", }, + "subaccount_uins": { Type: schema.TypeList, Optional: true, Description: "List of sub-account. Up to 50 sub-accounts can be passed in at a time.", - Elem: &schema.Schema{Type: schema.TypeString}, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, + "role_ids": { Type: schema.TypeList, Optional: true, Description: "List of Role ID. Up to 50 sub-accounts can be passed in at a time.", - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "result_output_file": { - Type: schema.TypeString, - Optional: true, - Description: "Used for save result.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, + "list": { Type: schema.TypeList, Computed: true, @@ -59,56 +63,79 @@ func DataSourceTencentCloudKubernetesClusterCommonNames() *schema.Resource { }, }, }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, }, } } -func datasourceTencentCloudKubernetesClusterCommonNamesRead(d *schema.ResourceData, meta interface{}) error { - defer tccommon.LogElapsed("datasource.tencentcloud_kubernetes_cluster_common_names.read")() +func dataSourceTencentCloudKubernetesClusterCommonNamesRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_cluster_common_names.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() - service := TkeService{client} + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - clusterId := d.Get("cluster_id").(string) - request := tke.NewDescribeClusterCommonNamesRequest() - request.ClusterId = &clusterId + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - if v, ok := d.GetOk("subaccount_uins"); ok { - request.SubaccountUins = helper.InterfacesStringsPoint(v.([]interface{})) + var ( + clusterId string + ) + if v, ok := d.GetOk("cluster_id"); ok { + clusterId = v.(string) } - if v, ok := d.GetOk("role_ids"); ok { - request.RoleIds = helper.InterfacesStringsPoint(v.([]interface{})) + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("cluster_id"); ok { + paramMap["ClusterId"] = helper.String(v.(string)) } - names, err := service.DescribeClusterCommonNames(ctx, request) - + var respData []*tke.CommonName + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeKubernetesClusterCommonNamesByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) if err != nil { return err } - result := make([]interface{}, 0, len(names)) - cns := make([]string, 0) + cns := make([]string, 0, len(respData)) + commonNamesList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, commonNames := range respData { + commonNamesMap := map[string]interface{}{} - for i := range names { - cn := names[i] - result = append(result, map[string]interface{}{ - "subaccount_uin": cn.SubaccountUin, - "common_names": cn.CN, - }) - cns = append(cns, *cn.CN) - } + if commonNames.SubaccountUin != nil { + commonNamesMap["subaccount_uin"] = commonNames.SubaccountUin + } - if err := d.Set("list", result); err != nil { - return err + var cN string + if commonNames.CN != nil { + commonNamesMap["common_names"] = commonNames.CN + cN = *commonNames.CN + } + + cns = append(cns, cN) + commonNamesList = append(commonNamesList, commonNamesMap) + } + + _ = d.Set("list", commonNamesList) } - d.SetId(clusterId + tccommon.FILED_SP + helper.DataResourceIdsHash(cns)) + d.SetId(strings.Join([]string{clusterId, helper.DataResourceIdsHash(cns)}, tccommon.FILED_SP)) - if output, ok := d.GetOk("result_output_file"); ok { - return tccommon.WriteToFile(output.(string), result) + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), commonNamesList); e != nil { + return e + } } return nil diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names_extension.go new file mode 100644 index 0000000000..ea8db0e8e5 --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_common_names_extension.go @@ -0,0 +1,27 @@ +package tke + +import ( + "context" + "fmt" + + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func dataSourceTencentCloudKubernetesClusterCommonNamesReadPreRequest0(ctx context.Context, req *tke.DescribeClusterCommonNamesRequest) error { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + + if v, ok := d.GetOk("subaccount_uins"); ok { + req.SubaccountUins = helper.InterfacesStringsPoint(v.([]interface{})) + } + if v, ok := d.GetOk("role_ids"); ok { + req.RoleIds = helper.InterfacesStringsPoint(v.([]interface{})) + } + + return nil +} diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances.go index 6651c1b135..d8fdc317f2 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances.go @@ -1,14 +1,14 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - kubernetes "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -17,29 +17,29 @@ func DataSourceTencentCloudKubernetesClusterInstances() *schema.Resource { Read: dataSourceTencentCloudKubernetesClusterInstancesRead, Schema: map[string]*schema.Schema{ "cluster_id": { - Required: true, Type: schema.TypeString, + Required: true, Description: "ID of the cluster.", }, "instance_ids": { - Optional: true, - Type: schema.TypeSet, + Type: schema.TypeSet, + Optional: true, + Description: "List of node instance IDs to be obtained. If it is empty, it means pulling all node instances in the cluster.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Description: "List of node instance IDs to be obtained. If it is empty, it means pulling all node instances in the cluster.", }, "instance_role": { - Optional: true, Type: schema.TypeString, + Optional: true, Description: "Node role, MASTER, WORKER, ETCD, MASTER_ETCD,ALL, default is WORKER.", }, "filters": { - Optional: true, Type: schema.TypeList, + Optional: true, Description: "List of filter conditions. The optional values of Name are `nodepool-id` and `nodepool-instance-type`. Name is `nodepool-id`, which means filtering machines based on node pool id, and Value is the specific node pool id. Name is `nodepool-instance-type`, which indicates how the node is added to the node pool. Value is MANUALLY_ADDED (manually added to the node pool), AUTOSCALING_ADDED (joined by scaling group expansion method), ALL (manually join the node pool and join the node pool through scaling group expansion).", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -49,20 +49,20 @@ func DataSourceTencentCloudKubernetesClusterInstances() *schema.Resource { Description: "The attribute name, if there are multiple filters, the relationship between the filters is a logical AND relationship.", }, "values": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Required: true, + Description: "Attribute values, if there are multiple values in the same filter, the relationship between values under the same filter is a logical OR relationship.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Required: true, - Description: "Attribute values, if there are multiple values in the same filter, the relationship between values under the same filter is a logical OR relationship.", }, }, }, }, "instance_set": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "List of instances in the cluster.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -311,12 +311,12 @@ func DataSourceTencentCloudKubernetesClusterInstances() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "kubelet": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Computed: true, + Description: "Kubelet custom parameters.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Computed: true, - Description: "Kubelet custom parameters.", }, }, }, @@ -361,9 +361,10 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_cluster_instances.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} paramMap := make(map[string]interface{}) if v, ok := d.GetOk("cluster_id"); ok { @@ -371,8 +372,13 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData } if v, ok := d.GetOk("instance_ids"); ok { + instanceIdsList := []*string{} instanceIdsSet := v.(*schema.Set).List() - paramMap["InstanceIds"] = helper.InterfacesStringsPoint(instanceIdsSet) + for i := range instanceIdsSet { + instanceIds := instanceIdsSet[i].(string) + instanceIdsList = append(instanceIdsList, helper.String(instanceIds)) + } + paramMap["InstanceIds"] = instanceIdsList } if v, ok := d.GetOk("instance_role"); ok { @@ -381,135 +387,135 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData if v, ok := d.GetOk("filters"); ok { filtersSet := v.([]interface{}) - tmpSet := make([]*kubernetes.Filter, 0, len(filtersSet)) - + tmpSet := make([]*tke.Filter, 0, len(filtersSet)) for _, item := range filtersSet { - filter := kubernetes.Filter{} - filterMap := item.(map[string]interface{}) - - if v, ok := filterMap["name"]; ok { + filtersMap := item.(map[string]interface{}) + filter := tke.Filter{} + if v, ok := filtersMap["name"]; ok { filter.Name = helper.String(v.(string)) } - if v, ok := filterMap["values"]; ok { + if v, ok := filtersMap["values"]; ok { valuesSet := v.(*schema.Set).List() - filter.Values = helper.InterfacesStringsPoint(valuesSet) + for i := range valuesSet { + values := valuesSet[i].(string) + filter.Values = append(filter.Values, helper.String(values)) + } } tmpSet = append(tmpSet, &filter) } paramMap["Filters"] = tmpSet } - service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - - var instanceSet []*kubernetes.Instance + var respData []*tke.Instance err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKubernetesClusterInstancesByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } - instanceSet = result + respData = result return nil }) if err != nil { return err } - ids := make([]string, 0, len(instanceSet)) - tmpList := make([]map[string]interface{}, 0, len(instanceSet)) + ids := make([]string, 0, len(respData)) + instanceSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, instanceSet := range respData { + instanceSetMap := map[string]interface{}{} - if instanceSet != nil { - for _, instance := range instanceSet { - instanceMap := map[string]interface{}{} - - if instance.InstanceId != nil { - instanceMap["instance_id"] = instance.InstanceId + var instanceId string + if instanceSet.InstanceId != nil { + instanceSetMap["instance_id"] = instanceSet.InstanceId + instanceId = *instanceSet.InstanceId } - if instance.InstanceRole != nil { - instanceMap["instance_role"] = instance.InstanceRole + if instanceSet.InstanceRole != nil { + instanceSetMap["instance_role"] = instanceSet.InstanceRole } - if instance.FailedReason != nil { - instanceMap["failed_reason"] = instance.FailedReason + if instanceSet.FailedReason != nil { + instanceSetMap["failed_reason"] = instanceSet.FailedReason } - if instance.InstanceState != nil { - instanceMap["instance_state"] = instance.InstanceState + if instanceSet.InstanceState != nil { + instanceSetMap["instance_state"] = instanceSet.InstanceState } - if instance.DrainStatus != nil { - instanceMap["drain_status"] = instance.DrainStatus + if instanceSet.DrainStatus != nil { + instanceSetMap["drain_status"] = instanceSet.DrainStatus } - if instance.InstanceAdvancedSettings != nil { - instanceAdvancedSettingsMap := map[string]interface{}{} + instanceAdvancedSettingsMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.DesiredPodNumber != nil { - instanceAdvancedSettingsMap["desired_pod_number"] = instance.InstanceAdvancedSettings.DesiredPodNumber + if instanceSet.InstanceAdvancedSettings != nil { + if instanceSet.InstanceAdvancedSettings.DesiredPodNumber != nil { + instanceAdvancedSettingsMap["desired_pod_number"] = instanceSet.InstanceAdvancedSettings.DesiredPodNumber } - if instance.InstanceAdvancedSettings.GPUArgs != nil { - gPUArgsMap := map[string]interface{}{} + gPUArgsMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.GPUArgs.MIGEnable != nil { - gPUArgsMap["mig_enable"] = instance.InstanceAdvancedSettings.GPUArgs.MIGEnable + if instanceSet.InstanceAdvancedSettings.GPUArgs != nil { + if instanceSet.InstanceAdvancedSettings.GPUArgs.MIGEnable != nil { + gPUArgsMap["mig_enable"] = instanceSet.InstanceAdvancedSettings.GPUArgs.MIGEnable } - if instance.InstanceAdvancedSettings.GPUArgs.Driver != nil { - driverMap := map[string]interface{}{} + driverMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.GPUArgs.Driver.Version != nil { - driverMap["version"] = instance.InstanceAdvancedSettings.GPUArgs.Driver.Version + if instanceSet.InstanceAdvancedSettings.GPUArgs.Driver != nil { + if instanceSet.InstanceAdvancedSettings.GPUArgs.Driver.Version != nil { + driverMap["version"] = instanceSet.InstanceAdvancedSettings.GPUArgs.Driver.Version } - if instance.InstanceAdvancedSettings.GPUArgs.Driver.Name != nil { - driverMap["name"] = instance.InstanceAdvancedSettings.GPUArgs.Driver.Name + if instanceSet.InstanceAdvancedSettings.GPUArgs.Driver.Name != nil { + driverMap["name"] = instanceSet.InstanceAdvancedSettings.GPUArgs.Driver.Name } gPUArgsMap["driver"] = []interface{}{driverMap} } - if instance.InstanceAdvancedSettings.GPUArgs.CUDA != nil { - cUDAMap := map[string]interface{}{} + cUDAMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.GPUArgs.CUDA.Version != nil { - cUDAMap["version"] = instance.InstanceAdvancedSettings.GPUArgs.CUDA.Version + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDA != nil { + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDA.Version != nil { + cUDAMap["version"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDA.Version } - if instance.InstanceAdvancedSettings.GPUArgs.CUDA.Name != nil { - cUDAMap["name"] = instance.InstanceAdvancedSettings.GPUArgs.CUDA.Name + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDA.Name != nil { + cUDAMap["name"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDA.Name } gPUArgsMap["cuda"] = []interface{}{cUDAMap} } - if instance.InstanceAdvancedSettings.GPUArgs.CUDNN != nil { - cUDNNMap := map[string]interface{}{} + cUDNNMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.GPUArgs.CUDNN.Version != nil { - cUDNNMap["version"] = instance.InstanceAdvancedSettings.GPUArgs.CUDNN.Version + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN != nil { + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.Version != nil { + cUDNNMap["version"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.Version } - if instance.InstanceAdvancedSettings.GPUArgs.CUDNN.Name != nil { - cUDNNMap["name"] = instance.InstanceAdvancedSettings.GPUArgs.CUDNN.Name + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.Name != nil { + cUDNNMap["name"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.Name } - if instance.InstanceAdvancedSettings.GPUArgs.CUDNN.DocName != nil { - cUDNNMap["doc_name"] = instance.InstanceAdvancedSettings.GPUArgs.CUDNN.DocName + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.DocName != nil { + cUDNNMap["doc_name"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.DocName } - if instance.InstanceAdvancedSettings.GPUArgs.CUDNN.DevName != nil { - cUDNNMap["dev_name"] = instance.InstanceAdvancedSettings.GPUArgs.CUDNN.DevName + if instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.DevName != nil { + cUDNNMap["dev_name"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CUDNN.DevName } gPUArgsMap["cudnn"] = []interface{}{cUDNNMap} } - if instance.InstanceAdvancedSettings.GPUArgs.CustomDriver != nil { - customDriverMap := map[string]interface{}{} + customDriverMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.GPUArgs.CustomDriver.Address != nil { - customDriverMap["address"] = instance.InstanceAdvancedSettings.GPUArgs.CustomDriver.Address + if instanceSet.InstanceAdvancedSettings.GPUArgs.CustomDriver != nil { + if instanceSet.InstanceAdvancedSettings.GPUArgs.CustomDriver.Address != nil { + customDriverMap["address"] = instanceSet.InstanceAdvancedSettings.GPUArgs.CustomDriver.Address } gPUArgsMap["custom_driver"] = []interface{}{customDriverMap} @@ -518,13 +524,13 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData instanceAdvancedSettingsMap["gpu_args"] = []interface{}{gPUArgsMap} } - if instance.InstanceAdvancedSettings.PreStartUserScript != nil { - instanceAdvancedSettingsMap["pre_start_user_script"] = instance.InstanceAdvancedSettings.PreStartUserScript + if instanceSet.InstanceAdvancedSettings.PreStartUserScript != nil { + instanceAdvancedSettingsMap["pre_start_user_script"] = instanceSet.InstanceAdvancedSettings.PreStartUserScript } - if instance.InstanceAdvancedSettings.Taints != nil { - var taintsList []interface{} - for _, taints := range instance.InstanceAdvancedSettings.Taints { + taintsList := make([]map[string]interface{}, 0, len(instanceSet.InstanceAdvancedSettings.Taints)) + if instanceSet.InstanceAdvancedSettings.Taints != nil { + for _, taints := range instanceSet.InstanceAdvancedSettings.Taints { taintsMap := map[string]interface{}{} if taints.Key != nil { @@ -544,26 +550,25 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData instanceAdvancedSettingsMap["taints"] = taintsList } - - if instance.InstanceAdvancedSettings.MountTarget != nil { - instanceAdvancedSettingsMap["mount_target"] = instance.InstanceAdvancedSettings.MountTarget + if instanceSet.InstanceAdvancedSettings.MountTarget != nil { + instanceAdvancedSettingsMap["mount_target"] = instanceSet.InstanceAdvancedSettings.MountTarget } - if instance.InstanceAdvancedSettings.DockerGraphPath != nil { - instanceAdvancedSettingsMap["docker_graph_path"] = instance.InstanceAdvancedSettings.DockerGraphPath + if instanceSet.InstanceAdvancedSettings.DockerGraphPath != nil { + instanceAdvancedSettingsMap["docker_graph_path"] = instanceSet.InstanceAdvancedSettings.DockerGraphPath } - if instance.InstanceAdvancedSettings.UserScript != nil { - instanceAdvancedSettingsMap["user_script"] = instance.InstanceAdvancedSettings.UserScript + if instanceSet.InstanceAdvancedSettings.UserScript != nil { + instanceAdvancedSettingsMap["user_script"] = instanceSet.InstanceAdvancedSettings.UserScript } - if instance.InstanceAdvancedSettings.Unschedulable != nil { - instanceAdvancedSettingsMap["unschedulable"] = instance.InstanceAdvancedSettings.Unschedulable + if instanceSet.InstanceAdvancedSettings.Unschedulable != nil { + instanceAdvancedSettingsMap["unschedulable"] = instanceSet.InstanceAdvancedSettings.Unschedulable } - if instance.InstanceAdvancedSettings.Labels != nil { - var labelsList []interface{} - for _, labels := range instance.InstanceAdvancedSettings.Labels { + labelsList := make([]map[string]interface{}, 0, len(instanceSet.InstanceAdvancedSettings.Labels)) + if instanceSet.InstanceAdvancedSettings.Labels != nil { + for _, labels := range instanceSet.InstanceAdvancedSettings.Labels { labelsMap := map[string]interface{}{} if labels.Name != nil { @@ -579,10 +584,9 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData instanceAdvancedSettingsMap["labels"] = labelsList } - - if instance.InstanceAdvancedSettings.DataDisks != nil { - var dataDisksList []interface{} - for _, dataDisks := range instance.InstanceAdvancedSettings.DataDisks { + dataDisksList := make([]map[string]interface{}, 0, len(instanceSet.InstanceAdvancedSettings.DataDisks)) + if instanceSet.InstanceAdvancedSettings.DataDisks != nil { + for _, dataDisks := range instanceSet.InstanceAdvancedSettings.DataDisks { dataDisksMap := map[string]interface{}{} if dataDisks.DiskType != nil { @@ -614,49 +618,50 @@ func dataSourceTencentCloudKubernetesClusterInstancesRead(d *schema.ResourceData instanceAdvancedSettingsMap["data_disks"] = dataDisksList } + extraArgsMap := map[string]interface{}{} - if instance.InstanceAdvancedSettings.ExtraArgs != nil { - extraArgsMap := map[string]interface{}{} - - if instance.InstanceAdvancedSettings.ExtraArgs.Kubelet != nil { - extraArgsMap["kubelet"] = instance.InstanceAdvancedSettings.ExtraArgs.Kubelet + if instanceSet.InstanceAdvancedSettings.ExtraArgs != nil { + if instanceSet.InstanceAdvancedSettings.ExtraArgs.Kubelet != nil { + extraArgsMap["kubelet"] = instanceSet.InstanceAdvancedSettings.ExtraArgs.Kubelet } instanceAdvancedSettingsMap["extra_args"] = []interface{}{extraArgsMap} } - instanceMap["instance_advanced_settings"] = []interface{}{instanceAdvancedSettingsMap} + instanceSetMap["instance_advanced_settings"] = []interface{}{instanceAdvancedSettingsMap} } - if instance.CreatedTime != nil { - instanceMap["created_time"] = instance.CreatedTime + if instanceSet.CreatedTime != nil { + instanceSetMap["created_time"] = instanceSet.CreatedTime } - if instance.LanIP != nil { - instanceMap["lan_ip"] = instance.LanIP + if instanceSet.LanIP != nil { + instanceSetMap["lan_ip"] = instanceSet.LanIP } - if instance.NodePoolId != nil { - instanceMap["node_pool_id"] = instance.NodePoolId + if instanceSet.NodePoolId != nil { + instanceSetMap["node_pool_id"] = instanceSet.NodePoolId } - if instance.AutoscalingGroupId != nil { - instanceMap["autoscaling_group_id"] = instance.AutoscalingGroupId + if instanceSet.AutoscalingGroupId != nil { + instanceSetMap["autoscaling_group_id"] = instanceSet.AutoscalingGroupId } - ids = append(ids, *instance.InstanceId) - tmpList = append(tmpList, instanceMap) + ids = append(ids, instanceId) + instanceSetList = append(instanceSetList, instanceSetMap) } - _ = d.Set("instance_set", tmpList) + _ = d.Set("instance_set", instanceSetList) } d.SetId(helper.DataResourceIdsHash(ids)) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), instanceSetList); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances_extension.go new file mode 100644 index 0000000000..7fdf745226 --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_instances_extension.go @@ -0,0 +1 @@ +package tke diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels.go index ccccd48d15..e196368bee 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels.go @@ -1,29 +1,28 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" - "fmt" - "math/rand" - - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "strings" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func DataSourceTencentCloudKubernetesClusterLevels() *schema.Resource { return &schema.Resource{ - Read: datasourceTencentCloudKubernetesClusterLevelsRead, + Read: dataSourceTencentCloudKubernetesClusterLevelsRead, Schema: map[string]*schema.Schema{ "cluster_id": { Type: schema.TypeString, Optional: true, Description: "Specify cluster Id, if set will only query current cluster's available levels.", }, - "result_output_file": { - Type: schema.TypeString, - Optional: true, - Description: "Used for save result.", - }, + "list": { Type: schema.TypeList, Computed: true, @@ -73,47 +72,103 @@ func DataSourceTencentCloudKubernetesClusterLevels() *schema.Resource { }, }, }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, }, } } -func datasourceTencentCloudKubernetesClusterLevelsRead(d *schema.ResourceData, meta interface{}) error { - defer tccommon.LogElapsed("datasource.tencentcloud_kubernetes_cluster_levels.read")() +func dataSourceTencentCloudKubernetesClusterLevelsRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_cluster_levels.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := TkeService{meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - clusterId := d.Get("cluster_id").(string) - result, err := service.DescribeClusterLevelAttribute(ctx, clusterId) + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + var ( + clusterID string + ) + if v, ok := d.GetOk("cluster_id"); ok { + clusterID = v.(string) + } + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("cluster_id"); ok { + paramMap["ClusterID"] = helper.String(v.(string)) + } + + var respData []*tke.ClusterLevelAttribute + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeKubernetesClusterLevelsByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) if err != nil { - d.SetId("") return err } - d.SetId(fmt.Sprintf("cluster-level-%s__%d", clusterId, rand.Intn(4))) - - list := make([]interface{}, 0, len(result)) - - for i := range result { - item := result[i] - level := map[string]interface{}{ - "name": item.Name, - "alias": item.Alias, - "crd_count": item.CRDCount, - "config_map_count": item.ConfigMapCount, - "enable": item.Enable, - "node_count": item.NodeCount, - "other_count": item.OtherCount, - "pod_count": item.PodCount, + + levels := make([]string, 0, len(respData)) + itemsList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, items := range respData { + itemsMap := map[string]interface{}{} + + var name string + if items.Name != nil { + itemsMap["name"] = items.Name + name = *items.Name + } + + if items.Alias != nil { + itemsMap["alias"] = items.Alias + } + + if items.CRDCount != nil { + itemsMap["crd_count"] = items.CRDCount + } + + if items.ConfigMapCount != nil { + itemsMap["config_map_count"] = items.ConfigMapCount + } + + if items.Enable != nil { + itemsMap["enable"] = items.Enable + } + + if items.NodeCount != nil { + itemsMap["node_count"] = items.NodeCount + } + + if items.OtherCount != nil { + itemsMap["other_count"] = items.OtherCount + } + + if items.PodCount != nil { + itemsMap["pod_count"] = items.PodCount + } + + levels = append(levels, name) + itemsList = append(itemsList, itemsMap) } - list = append(list, level) + + _ = d.Set("list", itemsList) } - _ = d.Set("list", list) + d.SetId(strings.Join([]string{clusterID, helper.DataResourceIdsHash(levels)}, tccommon.FILED_SP)) - if output, ok := d.GetOk("result_output_file"); ok { - return tccommon.WriteToFile(output.(string), list) + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), itemsList); e != nil { + return e + } } return nil diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels_extension.go new file mode 100644 index 0000000000..7fdf745226 --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_levels_extension.go @@ -0,0 +1 @@ +package tke diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools.go index 6c46143aaf..054286b3f8 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools.go @@ -1,14 +1,14 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -17,14 +17,14 @@ func DataSourceTencentCloudKubernetesClusterNodePools() *schema.Resource { Read: dataSourceTencentCloudKubernetesClusterNodePoolsRead, Schema: map[string]*schema.Schema{ "cluster_id": { - Required: true, Type: schema.TypeString, + Required: true, Description: "ID of the cluster.", }, "filters": { - Optional: true, Type: schema.TypeList, + Optional: true, Description: "NodePoolsName, Filter according to the node pool name, type: String, required: no. NodePoolsId, Filter according to the node pool ID, type: String, required: no. tags, Filter according to the label key value pairs, type: String, required: no. tag:tag-key, Filter according to the label key value pairs, type: String, required: no.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -34,20 +34,20 @@ func DataSourceTencentCloudKubernetesClusterNodePools() *schema.Resource { Description: "The attribute name, if there are multiple filters, the relationship between the filters is a logical AND relationship.", }, "values": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Required: true, + Description: "Attribute values, if there are multiple values in the same filter, the relationship between values under the same filter is a logical OR relationship.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Required: true, - Description: "Attribute values, if there are multiple values in the same filter, the relationship between values under the same filter is a logical OR relationship.", }, }, }, }, "node_pool_set": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "Node Pool List.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -267,12 +267,12 @@ func DataSourceTencentCloudKubernetesClusterNodePools() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "kubelet": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Computed: true, + Description: "Kubelet custom parameters.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Computed: true, - Description: "Kubelet custom parameters.", }, }, }, @@ -440,12 +440,13 @@ func DataSourceTencentCloudKubernetesClusterNodePools() *schema.Resource { } func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData, meta interface{}) error { - defer tccommon.LogElapsed("data_source.tencentcloud_tke_cluster_node_pools.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_cluster_node_pools.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} paramMap := make(map[string]interface{}) if v, ok := d.GetOk("cluster_id"); ok { @@ -455,72 +456,72 @@ func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData if v, ok := d.GetOk("filters"); ok { filtersSet := v.([]interface{}) tmpSet := make([]*tke.Filter, 0, len(filtersSet)) - for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) filter := tke.Filter{} - filterMap := item.(map[string]interface{}) - - if v1, ok1 := filterMap["name"]; ok1 { - filter.Name = helper.String(v1.(string)) + if v, ok := filtersMap["name"]; ok { + filter.Name = helper.String(v.(string)) } - if v1, ok1 := filterMap["values"]; ok1 { - valuesSet := v1.(*schema.Set).List() - filter.Values = helper.InterfacesStringsPoint(valuesSet) + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filter.Values = append(filter.Values, helper.String(values)) + } } tmpSet = append(tmpSet, &filter) } paramMap["Filters"] = tmpSet } - service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - - var nodePoolSet []*tke.NodePool + var respData []*tke.NodePool err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKubernetesClusterNodePoolsByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } - nodePoolSet = result + respData = result return nil }) if err != nil { return err } - ids := make([]string, 0, len(nodePoolSet)) - tmpList := make([]map[string]interface{}, 0, len(nodePoolSet)) + ids := make([]string, 0, len(respData)) + nodePoolSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, nodePoolSet := range respData { + nodePoolSetMap := map[string]interface{}{} - if nodePoolSet != nil { - for _, nodePool := range nodePoolSet { - nodePoolMap := map[string]interface{}{} - - if nodePool.NodePoolId != nil { - nodePoolMap["node_pool_id"] = nodePool.NodePoolId + var nodePoolId string + if nodePoolSet.NodePoolId != nil { + nodePoolSetMap["node_pool_id"] = nodePoolSet.NodePoolId + nodePoolId = *nodePoolSet.NodePoolId } - if nodePool.Name != nil { - nodePoolMap["name"] = nodePool.Name + if nodePoolSet.Name != nil { + nodePoolSetMap["name"] = nodePoolSet.Name } - if nodePool.ClusterInstanceId != nil { - nodePoolMap["cluster_instance_id"] = nodePool.ClusterInstanceId + if nodePoolSet.ClusterInstanceId != nil { + nodePoolSetMap["cluster_instance_id"] = nodePoolSet.ClusterInstanceId } - if nodePool.LifeState != nil { - nodePoolMap["life_state"] = nodePool.LifeState + if nodePoolSet.LifeState != nil { + nodePoolSetMap["life_state"] = nodePoolSet.LifeState } - if nodePool.LaunchConfigurationId != nil { - nodePoolMap["launch_configuration_id"] = nodePool.LaunchConfigurationId + if nodePoolSet.LaunchConfigurationId != nil { + nodePoolSetMap["launch_configuration_id"] = nodePoolSet.LaunchConfigurationId } - if nodePool.AutoscalingGroupId != nil { - nodePoolMap["autoscaling_group_id"] = nodePool.AutoscalingGroupId + if nodePoolSet.AutoscalingGroupId != nil { + nodePoolSetMap["autoscaling_group_id"] = nodePoolSet.AutoscalingGroupId } - if nodePool.Labels != nil { - var labelsList []interface{} - for _, labels := range nodePool.Labels { + labelsList := make([]map[string]interface{}, 0, len(nodePoolSet.Labels)) + if nodePoolSet.Labels != nil { + for _, labels := range nodePoolSet.Labels { labelsMap := map[string]interface{}{} if labels.Name != nil { @@ -534,12 +535,11 @@ func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData labelsList = append(labelsList, labelsMap) } - nodePoolMap["labels"] = labelsList + nodePoolSetMap["labels"] = labelsList } - - if nodePool.Taints != nil { - var taintsList []interface{} - for _, taints := range nodePool.Taints { + taintsList := make([]map[string]interface{}, 0, len(nodePoolSet.Taints)) + if nodePoolSet.Taints != nil { + for _, taints := range nodePoolSet.Taints { taintsMap := map[string]interface{}{} if taints.Key != nil { @@ -557,98 +557,97 @@ func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData taintsList = append(taintsList, taintsMap) } - nodePoolMap["taints"] = taintsList + nodePoolSetMap["taints"] = taintsList } + nodeCountSummaryMap := map[string]interface{}{} - if nodePool.NodeCountSummary != nil { - nodeCountSummaryMap := map[string]interface{}{} + if nodePoolSet.NodeCountSummary != nil { + manuallyAddedMap := map[string]interface{}{} - if nodePool.NodeCountSummary.ManuallyAdded != nil { - manuallyAddedMap := map[string]interface{}{} - - if nodePool.NodeCountSummary.ManuallyAdded.Joining != nil { - manuallyAddedMap["joining"] = nodePool.NodeCountSummary.ManuallyAdded.Joining + if nodePoolSet.NodeCountSummary.ManuallyAdded != nil { + if nodePoolSet.NodeCountSummary.ManuallyAdded.Joining != nil { + manuallyAddedMap["joining"] = nodePoolSet.NodeCountSummary.ManuallyAdded.Joining } - if nodePool.NodeCountSummary.ManuallyAdded.Initializing != nil { - manuallyAddedMap["initializing"] = nodePool.NodeCountSummary.ManuallyAdded.Initializing + if nodePoolSet.NodeCountSummary.ManuallyAdded.Initializing != nil { + manuallyAddedMap["initializing"] = nodePoolSet.NodeCountSummary.ManuallyAdded.Initializing } - if nodePool.NodeCountSummary.ManuallyAdded.Normal != nil { - manuallyAddedMap["normal"] = nodePool.NodeCountSummary.ManuallyAdded.Normal + if nodePoolSet.NodeCountSummary.ManuallyAdded.Normal != nil { + manuallyAddedMap["normal"] = nodePoolSet.NodeCountSummary.ManuallyAdded.Normal } - if nodePool.NodeCountSummary.ManuallyAdded.Total != nil { - manuallyAddedMap["total"] = nodePool.NodeCountSummary.ManuallyAdded.Total + if nodePoolSet.NodeCountSummary.ManuallyAdded.Total != nil { + manuallyAddedMap["total"] = nodePoolSet.NodeCountSummary.ManuallyAdded.Total } nodeCountSummaryMap["manually_added"] = []interface{}{manuallyAddedMap} } - if nodePool.NodeCountSummary.AutoscalingAdded != nil { - autoscalingAddedMap := map[string]interface{}{} + autoscalingAddedMap := map[string]interface{}{} - if nodePool.NodeCountSummary.AutoscalingAdded.Joining != nil { - autoscalingAddedMap["joining"] = nodePool.NodeCountSummary.AutoscalingAdded.Joining + if nodePoolSet.NodeCountSummary.AutoscalingAdded != nil { + if nodePoolSet.NodeCountSummary.AutoscalingAdded.Joining != nil { + autoscalingAddedMap["joining"] = nodePoolSet.NodeCountSummary.AutoscalingAdded.Joining } - if nodePool.NodeCountSummary.AutoscalingAdded.Initializing != nil { - autoscalingAddedMap["initializing"] = nodePool.NodeCountSummary.AutoscalingAdded.Initializing + if nodePoolSet.NodeCountSummary.AutoscalingAdded.Initializing != nil { + autoscalingAddedMap["initializing"] = nodePoolSet.NodeCountSummary.AutoscalingAdded.Initializing } - if nodePool.NodeCountSummary.AutoscalingAdded.Normal != nil { - autoscalingAddedMap["normal"] = nodePool.NodeCountSummary.AutoscalingAdded.Normal + if nodePoolSet.NodeCountSummary.AutoscalingAdded.Normal != nil { + autoscalingAddedMap["normal"] = nodePoolSet.NodeCountSummary.AutoscalingAdded.Normal } - if nodePool.NodeCountSummary.AutoscalingAdded.Total != nil { - autoscalingAddedMap["total"] = nodePool.NodeCountSummary.AutoscalingAdded.Total + if nodePoolSet.NodeCountSummary.AutoscalingAdded.Total != nil { + autoscalingAddedMap["total"] = nodePoolSet.NodeCountSummary.AutoscalingAdded.Total } nodeCountSummaryMap["autoscaling_added"] = []interface{}{autoscalingAddedMap} } - nodePoolMap["node_count_summary"] = []interface{}{nodeCountSummaryMap} + nodePoolSetMap["node_count_summary"] = []interface{}{nodeCountSummaryMap} } - if nodePool.AutoscalingGroupStatus != nil { - nodePoolMap["autoscaling_group_status"] = nodePool.AutoscalingGroupStatus + if nodePoolSet.AutoscalingGroupStatus != nil { + nodePoolSetMap["autoscaling_group_status"] = nodePoolSet.AutoscalingGroupStatus } - if nodePool.MaxNodesNum != nil { - nodePoolMap["max_nodes_num"] = nodePool.MaxNodesNum + if nodePoolSet.MaxNodesNum != nil { + nodePoolSetMap["max_nodes_num"] = nodePoolSet.MaxNodesNum } - if nodePool.MinNodesNum != nil { - nodePoolMap["min_nodes_num"] = nodePool.MinNodesNum + if nodePoolSet.MinNodesNum != nil { + nodePoolSetMap["min_nodes_num"] = nodePoolSet.MinNodesNum } - if nodePool.DesiredNodesNum != nil { - nodePoolMap["desired_nodes_num"] = nodePool.DesiredNodesNum + if nodePoolSet.DesiredNodesNum != nil { + nodePoolSetMap["desired_nodes_num"] = nodePoolSet.DesiredNodesNum } - if nodePool.NodePoolOs != nil { - nodePoolMap["node_pool_os"] = nodePool.NodePoolOs + if nodePoolSet.NodePoolOs != nil { + nodePoolSetMap["node_pool_os"] = nodePoolSet.NodePoolOs } - if nodePool.OsCustomizeType != nil { - nodePoolMap["os_customize_type"] = nodePool.OsCustomizeType + if nodePoolSet.OsCustomizeType != nil { + nodePoolSetMap["os_customize_type"] = nodePoolSet.OsCustomizeType } - if nodePool.ImageId != nil { - nodePoolMap["image_id"] = nodePool.ImageId + if nodePoolSet.ImageId != nil { + nodePoolSetMap["image_id"] = nodePoolSet.ImageId } - if nodePool.DesiredPodNum != nil { - nodePoolMap["desired_pod_num"] = nodePool.DesiredPodNum + if nodePoolSet.DesiredPodNum != nil { + nodePoolSetMap["desired_pod_num"] = nodePoolSet.DesiredPodNum } - if nodePool.UserScript != nil { - nodePoolMap["user_script"] = nodePool.UserScript + if nodePoolSet.UserScript != nil { + nodePoolSetMap["user_script"] = nodePoolSet.UserScript } - if nodePool.Tags != nil { - var tagsList []interface{} - for _, tags := range nodePool.Tags { + tagsList := make([]map[string]interface{}, 0, len(nodePoolSet.Tags)) + if nodePoolSet.Tags != nil { + for _, tags := range nodePoolSet.Tags { tagsMap := map[string]interface{}{} if tags.Key != nil { @@ -662,100 +661,99 @@ func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData tagsList = append(tagsList, tagsMap) } - nodePoolMap["tags"] = tagsList + nodePoolSetMap["tags"] = tagsList } - - if nodePool.DeletionProtection != nil { - nodePoolMap["deletion_protection"] = nodePool.DeletionProtection + if nodePoolSet.DeletionProtection != nil { + nodePoolSetMap["deletion_protection"] = nodePoolSet.DeletionProtection } - if nodePool.ExtraArgs != nil { - extraArgsMap := map[string]interface{}{} + extraArgsMap := map[string]interface{}{} - if nodePool.ExtraArgs.Kubelet != nil { - extraArgsMap["kubelet"] = nodePool.ExtraArgs.Kubelet + if nodePoolSet.ExtraArgs != nil { + if nodePoolSet.ExtraArgs.Kubelet != nil { + extraArgsMap["kubelet"] = nodePoolSet.ExtraArgs.Kubelet } - nodePoolMap["extra_args"] = []interface{}{extraArgsMap} + nodePoolSetMap["extra_args"] = []interface{}{extraArgsMap} } - if nodePool.GPUArgs != nil { - gPUArgsMap := map[string]interface{}{} + gPUArgsMap := map[string]interface{}{} - if nodePool.GPUArgs.MIGEnable != nil { - gPUArgsMap["mig_enable"] = nodePool.GPUArgs.MIGEnable + if nodePoolSet.GPUArgs != nil { + if nodePoolSet.GPUArgs.MIGEnable != nil { + gPUArgsMap["mig_enable"] = nodePoolSet.GPUArgs.MIGEnable } - if nodePool.GPUArgs.Driver != nil { - driverMap := map[string]interface{}{} + driverMap := map[string]interface{}{} - if nodePool.GPUArgs.Driver.Version != nil { - driverMap["version"] = nodePool.GPUArgs.Driver.Version + if nodePoolSet.GPUArgs.Driver != nil { + if nodePoolSet.GPUArgs.Driver.Version != nil { + driverMap["version"] = nodePoolSet.GPUArgs.Driver.Version } - if nodePool.GPUArgs.Driver.Name != nil { - driverMap["name"] = nodePool.GPUArgs.Driver.Name + if nodePoolSet.GPUArgs.Driver.Name != nil { + driverMap["name"] = nodePoolSet.GPUArgs.Driver.Name } gPUArgsMap["driver"] = []interface{}{driverMap} } - if nodePool.GPUArgs.CUDA != nil { - cUDAMap := map[string]interface{}{} + cUDAMap := map[string]interface{}{} - if nodePool.GPUArgs.CUDA.Version != nil { - cUDAMap["version"] = nodePool.GPUArgs.CUDA.Version + if nodePoolSet.GPUArgs.CUDA != nil { + if nodePoolSet.GPUArgs.CUDA.Version != nil { + cUDAMap["version"] = nodePoolSet.GPUArgs.CUDA.Version } - if nodePool.GPUArgs.CUDA.Name != nil { - cUDAMap["name"] = nodePool.GPUArgs.CUDA.Name + if nodePoolSet.GPUArgs.CUDA.Name != nil { + cUDAMap["name"] = nodePoolSet.GPUArgs.CUDA.Name } gPUArgsMap["cuda"] = []interface{}{cUDAMap} } - if nodePool.GPUArgs.CUDNN != nil { - cUDNNMap := map[string]interface{}{} + cUDNNMap := map[string]interface{}{} - if nodePool.GPUArgs.CUDNN.Version != nil { - cUDNNMap["version"] = nodePool.GPUArgs.CUDNN.Version + if nodePoolSet.GPUArgs.CUDNN != nil { + if nodePoolSet.GPUArgs.CUDNN.Version != nil { + cUDNNMap["version"] = nodePoolSet.GPUArgs.CUDNN.Version } - if nodePool.GPUArgs.CUDNN.Name != nil { - cUDNNMap["name"] = nodePool.GPUArgs.CUDNN.Name + if nodePoolSet.GPUArgs.CUDNN.Name != nil { + cUDNNMap["name"] = nodePoolSet.GPUArgs.CUDNN.Name } - if nodePool.GPUArgs.CUDNN.DocName != nil { - cUDNNMap["doc_name"] = nodePool.GPUArgs.CUDNN.DocName + if nodePoolSet.GPUArgs.CUDNN.DocName != nil { + cUDNNMap["doc_name"] = nodePoolSet.GPUArgs.CUDNN.DocName } - if nodePool.GPUArgs.CUDNN.DevName != nil { - cUDNNMap["dev_name"] = nodePool.GPUArgs.CUDNN.DevName + if nodePoolSet.GPUArgs.CUDNN.DevName != nil { + cUDNNMap["dev_name"] = nodePoolSet.GPUArgs.CUDNN.DevName } gPUArgsMap["cudnn"] = []interface{}{cUDNNMap} } - if nodePool.GPUArgs.CustomDriver != nil { - customDriverMap := map[string]interface{}{} + customDriverMap := map[string]interface{}{} - if nodePool.GPUArgs.CustomDriver.Address != nil { - customDriverMap["address"] = nodePool.GPUArgs.CustomDriver.Address + if nodePoolSet.GPUArgs.CustomDriver != nil { + if nodePoolSet.GPUArgs.CustomDriver.Address != nil { + customDriverMap["address"] = nodePoolSet.GPUArgs.CustomDriver.Address } gPUArgsMap["custom_driver"] = []interface{}{customDriverMap} } - nodePoolMap["gpu_args"] = []interface{}{gPUArgsMap} + nodePoolSetMap["gpu_args"] = []interface{}{gPUArgsMap} } - if nodePool.DockerGraphPath != nil { - nodePoolMap["docker_graph_path"] = nodePool.DockerGraphPath + if nodePoolSet.DockerGraphPath != nil { + nodePoolSetMap["docker_graph_path"] = nodePoolSet.DockerGraphPath } - if nodePool.DataDisks != nil { - var dataDisksList []interface{} - for _, dataDisks := range nodePool.DataDisks { + dataDisksList := make([]map[string]interface{}, 0, len(nodePoolSet.DataDisks)) + if nodePoolSet.DataDisks != nil { + for _, dataDisks := range nodePoolSet.DataDisks { dataDisksMap := map[string]interface{}{} if dataDisks.DiskType != nil { @@ -785,30 +783,31 @@ func dataSourceTencentCloudKubernetesClusterNodePoolsRead(d *schema.ResourceData dataDisksList = append(dataDisksList, dataDisksMap) } - nodePoolMap["data_disks"] = dataDisksList + nodePoolSetMap["data_disks"] = dataDisksList } - - if nodePool.Unschedulable != nil { - nodePoolMap["unschedulable"] = nodePool.Unschedulable + if nodePoolSet.Unschedulable != nil { + nodePoolSetMap["unschedulable"] = nodePoolSet.Unschedulable } - if nodePool.PreStartUserScript != nil { - nodePoolMap["pre_start_user_script"] = nodePool.PreStartUserScript + if nodePoolSet.PreStartUserScript != nil { + nodePoolSetMap["pre_start_user_script"] = nodePoolSet.PreStartUserScript } - ids = append(ids, *nodePool.NodePoolId) - tmpList = append(tmpList, nodePoolMap) + ids = append(ids, nodePoolId) + nodePoolSetList = append(nodePoolSetList, nodePoolSetMap) } - _ = d.Set("node_pool_set", tmpList) + _ = d.Set("node_pool_set", nodePoolSetList) } d.SetId(helper.DataResourceIdsHash(ids)) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), nodePoolSetList); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools_extension.go new file mode 100644 index 0000000000..7fdf745226 --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_cluster_node_pools_extension.go @@ -0,0 +1 @@ +package tke diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_clusters.go b/tencentcloud/services/tke/data_source_tc_kubernetes_clusters.go index aa860f0e8e..b59ef2281a 100644 --- a/tencentcloud/services/tke/data_source_tc_kubernetes_clusters.go +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_clusters.go @@ -1,233 +1,41 @@ +// Code generated by iacg; DO NOT EDIT. package tke import ( "context" - "fmt" - "log" - - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func tkeClusterInfo() map[string]*schema.Schema { - schemaBody := map[string]*schema.Schema{ - "cluster_id": { - Type: schema.TypeString, - Computed: true, - Description: "ID of cluster.", - }, - "cluster_name": { - Type: schema.TypeString, - Computed: true, - Description: "Name of the cluster.", - }, - "cluster_desc": { - Type: schema.TypeString, - Computed: true, - Description: "Description of the cluster.", - }, - "cluster_os": { - Type: schema.TypeString, - Computed: true, - Description: "Operating system of the cluster.", - }, - "container_runtime": { - Type: schema.TypeString, - Deprecated: "It has been deprecated from version 1.18.1.", - Computed: true, - Description: "Container runtime of the cluster.", - }, - "cluster_deploy_type": { - Type: schema.TypeString, - Computed: true, - Description: "Deployment type of the cluster.", - }, - "cluster_version": { - Type: schema.TypeString, - Computed: true, - Description: "Version of the cluster.", - }, - "cluster_ipvs": { - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether ipvs is enabled.", - }, - "vpc_id": { - Type: schema.TypeString, - Computed: true, - Description: "Vpc ID of the cluster.", - }, - "project_id": { - Type: schema.TypeInt, - Computed: true, - Description: "Project ID of the cluster.", - }, - "cluster_cidr": { - Type: schema.TypeString, - Computed: true, - Description: "A network address block of the cluster. Different from vpc cidr and cidr of other clusters within this VPC.", - }, - "ignore_cluster_cidr_conflict": { - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether to ignore the cluster cidr conflict error.", - }, - "cluster_max_pod_num": { - Type: schema.TypeInt, - Computed: true, - Description: "The maximum number of Pods per node in the cluster.", - }, - "cluster_max_service_num": { - Type: schema.TypeInt, - Computed: true, - Description: "The maximum number of services in the cluster.", - }, - "cluster_as_enabled": { - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether to enable cluster node auto scaler.", - }, - "node_name_type": { - Type: schema.TypeString, - Computed: true, - Description: "Node name type of cluster.", - }, - "cluster_extra_args": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "kube_apiserver": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - Description: "The customized parameters for kube-apiserver.", - }, - "kube_controller_manager": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - Description: "The customized parameters for kube-controller-manager.", - }, - "kube_scheduler": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - Description: "The customized parameters for kube-scheduler.", - }, - }, - }, - Description: "Customized parameters for master component.", - }, - "network_type": { - Type: schema.TypeString, - Computed: true, - Description: "Cluster network type.", - }, - "is_non_static_ip_mode": { - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether non-static ip mode is enabled.", - }, - "kube_proxy_mode": { - Type: schema.TypeString, - Computed: true, - Description: "Cluster kube-proxy mode.", - }, - "vpc_cni_type": { - Type: schema.TypeString, - Computed: true, - Description: "Distinguish between shared network card multi-IP mode and independent network card mode.", - }, - - "service_cidr": { - Type: schema.TypeString, - Computed: true, - Description: "The network address block of the cluster.", - }, - "eni_subnet_ids": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - Description: "Subnet IDs for cluster with VPC-CNI network mode.", - }, - "claim_expired_seconds": { - Type: schema.TypeInt, - Computed: true, - Description: "The expired seconds to recycle ENI.", - }, - "deletion_protection": { - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether cluster deletion protection is enabled.", - }, - "cluster_node_num": { - Type: schema.TypeInt, - Computed: true, - Description: "Number of nodes in the cluster.", - }, - "worker_instances_list": { - Type: schema.TypeList, - Computed: true, - Description: "An information list of cvm within the WORKER clusters. Each element contains the following attributes.", - Elem: &schema.Resource{ - Schema: tkeCvmState(), - }, - }, - "tags": { - Type: schema.TypeMap, - Computed: true, - Description: "Tags of the cluster.", - }, - "kube_config": { - Type: schema.TypeString, - Computed: true, - Description: "Kubernetes config.", - }, - "kube_config_intranet": { - Type: schema.TypeString, - Computed: true, - Description: "Kubernetes config of private network.", - }, - } - - for k, v := range tkeSecurityInfo() { - schemaBody[k] = v - } - - return schemaBody -} - func DataSourceTencentCloudKubernetesClusters() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKubernetesClustersRead, Schema: map[string]*schema.Schema{ "cluster_id": { Type: schema.TypeString, + Optional: true, ConflictsWith: []string{"cluster_name"}, Description: "ID of the cluster. Conflict with cluster_name, can not be set at the same time.", - Optional: true, }, + "cluster_name": { Type: schema.TypeString, - ConflictsWith: []string{"cluster_id"}, Optional: true, + ConflictsWith: []string{"cluster_id"}, Description: "Name of the cluster. Conflict with cluster_id, can not be set at the same time.", }, + "tags": { Type: schema.TypeMap, Optional: true, Description: "Tags of the cluster.", }, - "result_output_file": { - Type: schema.TypeString, - Optional: true, - Description: "Used to save results.", - }, + "kube_config_file_prefix": { Type: schema.TypeString, Optional: true, @@ -239,260 +47,398 @@ func DataSourceTencentCloudKubernetesClusters() *schema.Resource { Computed: true, Description: "An information list of kubernetes clusters. Each element contains the following attributes:", Elem: &schema.Resource{ - Schema: tkeClusterInfo(), + Schema: map[string]*schema.Schema{ + "cluster_id": { + Type: schema.TypeString, + Computed: true, + Description: "ID of cluster.", + }, + "cluster_name": { + Type: schema.TypeString, + Computed: true, + Description: "Name of the cluster.", + }, + "cluster_desc": { + Type: schema.TypeString, + Computed: true, + Description: "Description of the cluster.", + }, + "cluster_os": { + Type: schema.TypeString, + Computed: true, + Description: "Operating system of the cluster.", + }, + "container_runtime": { + Type: schema.TypeString, + Computed: true, + Description: "Container runtime of the cluster.", + Deprecated: "It has been deprecated from version 1.18.1.", + }, + "cluster_deploy_type": { + Type: schema.TypeString, + Computed: true, + Description: "Deployment type of the cluster.", + }, + "cluster_version": { + Type: schema.TypeString, + Computed: true, + Description: "Version of the cluster.", + }, + "cluster_ipvs": { + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether ipvs is enabled.", + }, + "vpc_id": { + Type: schema.TypeString, + Computed: true, + Description: "Vpc ID of the cluster.", + }, + "project_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Project ID of the cluster.", + }, + "cluster_cidr": { + Type: schema.TypeString, + Computed: true, + Description: "A network address block of the cluster. Different from vpc cidr and cidr of other clusters within this VPC.", + }, + "ignore_cluster_cidr_conflict": { + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether to ignore the cluster cidr conflict error.", + }, + "cluster_max_pod_num": { + Type: schema.TypeInt, + Computed: true, + Description: "The maximum number of Pods per node in the cluster.", + }, + "cluster_max_service_num": { + Type: schema.TypeInt, + Computed: true, + Description: "The maximum number of services in the cluster.", + }, + "cluster_as_enabled": { + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether to enable cluster node auto scaler.", + }, + "node_name_type": { + Type: schema.TypeString, + Computed: true, + Description: "Node name type of cluster.", + }, + "cluster_extra_args": { + Type: schema.TypeList, + Computed: true, + Description: "Customized parameters for master component.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "kube_apiserver": { + Type: schema.TypeList, + Computed: true, + Description: "The customized parameters for kube-apiserver.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "kube_controller_manager": { + Type: schema.TypeList, + Computed: true, + Description: "The customized parameters for kube-controller-manager.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "kube_scheduler": { + Type: schema.TypeList, + Computed: true, + Description: "The customized parameters for kube-scheduler.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + }, + }, + "network_type": { + Type: schema.TypeString, + Computed: true, + Description: "Cluster network type.", + }, + "is_non_static_ip_mode": { + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether non-static ip mode is enabled.", + }, + "kube_proxy_mode": { + Type: schema.TypeString, + Computed: true, + Description: "Cluster kube-proxy mode.", + }, + "vpc_cni_type": { + Type: schema.TypeString, + Computed: true, + Description: "Distinguish between shared network card multi-IP mode and independent network card mode.", + }, + "service_cidr": { + Type: schema.TypeString, + Computed: true, + Description: "The network address block of the cluster.", + }, + "eni_subnet_ids": { + Type: schema.TypeList, + Computed: true, + Description: "Subnet IDs for cluster with VPC-CNI network mode.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "claim_expired_seconds": { + Type: schema.TypeInt, + Computed: true, + Description: "The expired seconds to recycle ENI.", + }, + "deletion_protection": { + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether cluster deletion protection is enabled.", + }, + "cluster_node_num": { + Type: schema.TypeInt, + Computed: true, + Description: "Number of nodes in the cluster.", + }, + "worker_instances_list": { + Type: schema.TypeList, + Computed: true, + Description: "An information list of cvm within the WORKER clusters. Each element contains the following attributes.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "instance_id": { + Type: schema.TypeString, + Computed: true, + Description: "ID of the cvm.", + }, + "instance_role": { + Type: schema.TypeString, + Computed: true, + Description: "Role of the cvm.", + }, + "instance_state": { + Type: schema.TypeString, + Computed: true, + Description: "State of the cvm.", + }, + "failed_reason": { + Type: schema.TypeString, + Computed: true, + Description: "Information of the cvm when it is failed.", + }, + "lan_ip": { + Type: schema.TypeString, + Computed: true, + Description: "LAN IP of the cvm.", + }, + }, + }, + }, + "tags": { + Type: schema.TypeMap, + Computed: true, + Description: "Tags of the cluster.", + }, + "kube_config": { + Type: schema.TypeString, + Computed: true, + Description: "Kubernetes config.", + }, + "kube_config_intranet": { + Type: schema.TypeString, + Computed: true, + Description: "Kubernetes config of private network.", + }, + "user_name": { + Type: schema.TypeString, + Computed: true, + Description: "User name of account.", + }, + "password": { + Type: schema.TypeString, + Computed: true, + Description: "Password of account.", + }, + "certification_authority": { + Type: schema.TypeString, + Computed: true, + Description: "The certificate used for access.", + }, + "cluster_external_endpoint": { + Type: schema.TypeString, + Computed: true, + Description: "External network address to access.", + }, + "domain": { + Type: schema.TypeString, + Computed: true, + Description: "Domain name for access.", + }, + "pgw_endpoint": { + Type: schema.TypeString, + Computed: true, + Description: "The Intranet address used for access.", + }, + "security_policy": { + Type: schema.TypeList, + Computed: true, + Description: "Access policy.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, }, }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, }, } - } + func dataSourceTencentCloudKubernetesClustersRead(d *schema.ResourceData, meta interface{}) error { defer tccommon.LogElapsed("data_source.tencentcloud_kubernetes_clusters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - service := TkeService{ - client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), - } + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - var ( - id string - name string - kubeConfigFilePrefix string - ) + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - if v, ok := d.GetOk("cluster_id"); ok { - id = v.(string) + paramMap := make(map[string]interface{}) + var respData []*tke.Cluster + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeKubernetesClustersByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) + if err != nil { + return err } - if v, ok := d.GetOk("cluster_name"); ok { - name = v.(string) + if err := dataSourceTencentCloudKubernetesClustersReadPreHandleResponse0(ctx, paramMap, &respData); err != nil { + return err } - tags := helper.GetTags(d, "tags") + ids := make([]string, 0, len(respData)) + clustersList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, clusters := range respData { + clustersMap := map[string]interface{}{} - infos, err := service.DescribeClusters(ctx, id, name) - if err != nil && id == "" { - err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - infos, err = service.DescribeClusters(ctx, id, name) - if err != nil { - return tccommon.RetryError(err) + var clusterID string + if clusters.ClusterId != nil { + clustersMap["cluster_id"] = clusters.ClusterId + clusterID = *clusters.ClusterId } - return nil - }) - } - if err != nil { - return err - } + if clusters.ClusterName != nil { + clustersMap["cluster_name"] = clusters.ClusterName + } - list := make([]map[string]interface{}, 0, len(infos)) + if clusters.ClusterDescription != nil { + clustersMap["cluster_desc"] = clusters.ClusterDescription + } - var emptyStrFunc = func(ptr *string) string { - if ptr == nil { - return "" - } else { - return *ptr - } - } + if clusters.ClusterOs != nil { + clustersMap["cluster_os"] = clusters.ClusterOs + } - if v, ok := d.GetOk("kube_config_file_prefix"); ok { - kubeConfigFilePrefix = v.(string) - } + if clusters.ClusterType != nil { + clustersMap["cluster_deploy_type"] = clusters.ClusterType + } -LOOP: - for _, info := range infos { - if len(tags) > 0 { - for k, v := range tags { - if info.Tags[k] != v { - continue LOOP - } + if clusters.ClusterVersion != nil { + clustersMap["cluster_version"] = clusters.ClusterVersion } - } - var infoMap = map[string]interface{}{} - infoMap["cluster_id"] = info.ClusterId - infoMap["cluster_name"] = info.ClusterName - infoMap["cluster_desc"] = info.ClusterDescription - infoMap["cluster_os"] = tkeToShowClusterOs(info.ClusterOs) - infoMap["cluster_deploy_type"] = info.DeployType - infoMap["cluster_version"] = info.ClusterVersion - infoMap["cluster_ipvs"] = info.Ipvs - infoMap["cluster_as_enabled"] = info.AsEnabled - infoMap["node_name_type"] = info.NodeNameType - - infoMap["cluster_extra_args"] = []map[string]interface{}{{ - "kube_apiserver": info.ExtraArgs.KubeAPIServer, - "kube_controller_manager": info.ExtraArgs.KubeControllerManager, - "kube_scheduler": info.ExtraArgs.KubeScheduler, - }} - infoMap["network_type"] = info.NetworkType - infoMap["is_non_static_ip_mode"] = info.IsNonStaticIpMode - infoMap["deletion_protection"] = info.DeletionProtection - infoMap["kube_proxy_mode"] = info.KubeProxyMode - infoMap["vpc_id"] = info.VpcId - infoMap["project_id"] = info.ProjectId - infoMap["cluster_cidr"] = info.ClusterCidr - infoMap["ignore_cluster_cidr_conflict"] = info.IgnoreClusterCidrConflict - infoMap["cluster_max_pod_num"] = info.MaxNodePodNum - infoMap["cluster_max_service_num"] = info.MaxClusterServiceNum - infoMap["service_cidr"] = info.ServiceCIDR - infoMap["eni_subnet_ids"] = info.EniSubnetIds - infoMap["claim_expired_seconds"] = info.ClaimExpiredSeconds - infoMap["cluster_node_num"] = info.ClusterNodeNum - infoMap["tags"] = info.Tags - infoMap["vpc_cni_type"] = info.VpcCniType - - _, workers, err := service.DescribeClusterInstances(ctx, info.ClusterId) - if err != nil { - _, workers, err = service.DescribeClusterInstances(ctx, info.ClusterId) + if clusters.ClusterNetworkSettings != nil { + if clusters.ClusterNetworkSettings.Ipvs != nil { + clustersMap["cluster_ipvs"] = clusters.ClusterNetworkSettings.Ipvs + } - } - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error()) - return err - } + if clusters.ClusterNetworkSettings.KubeProxyMode != nil { + clustersMap["kube_proxy_mode"] = clusters.ClusterNetworkSettings.KubeProxyMode + } - workerInstancesList := make([]map[string]interface{}, 0, len(workers)) - for _, cvm := range workers { - tempMap := make(map[string]interface{}) - tempMap["instance_id"] = cvm.InstanceId - tempMap["instance_role"] = cvm.InstanceRole - tempMap["instance_state"] = cvm.InstanceState - tempMap["failed_reason"] = cvm.FailedReason - tempMap["lan_ip"] = cvm.LanIp - workerInstancesList = append(workerInstancesList, tempMap) - } + if clusters.ClusterNetworkSettings.VpcId != nil { + clustersMap["vpc_id"] = clusters.ClusterNetworkSettings.VpcId + } - infoMap["worker_instances_list"] = workerInstancesList + if clusters.ClusterNetworkSettings.ClusterCIDR != nil { + clustersMap["cluster_cidr"] = clusters.ClusterNetworkSettings.ClusterCIDR + } - securityRet, err := service.DescribeClusterSecurity(ctx, info.ClusterId) - if err != nil { - securityRet, err = service.DescribeClusterSecurity(ctx, info.ClusterId) - } + if clusters.ClusterNetworkSettings.IgnoreClusterCIDRConflict != nil { + clustersMap["ignore_cluster_cidr_conflict"] = clusters.ClusterNetworkSettings.IgnoreClusterCIDRConflict + } - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterSecurity fail, reason:%s\n ", logId, err.Error()) - return err - } + if clusters.ClusterNetworkSettings.MaxNodePodNum != nil { + clustersMap["cluster_max_pod_num"] = clusters.ClusterNetworkSettings.MaxNodePodNum + } - policies := make([]string, 0, len(securityRet.Response.SecurityPolicy)) - for _, v := range securityRet.Response.SecurityPolicy { - policies = append(policies, *v) - } + if clusters.ClusterNetworkSettings.MaxClusterServiceNum != nil { + clustersMap["cluster_max_service_num"] = clusters.ClusterNetworkSettings.MaxClusterServiceNum + } - infoMap["user_name"] = emptyStrFunc(securityRet.Response.UserName) - infoMap["password"] = emptyStrFunc(securityRet.Response.Password) - infoMap["certification_authority"] = emptyStrFunc(securityRet.Response.CertificationAuthority) - infoMap["cluster_external_endpoint"] = emptyStrFunc(securityRet.Response.ClusterExternalEndpoint) - infoMap["domain"] = emptyStrFunc(securityRet.Response.Domain) - infoMap["pgw_endpoint"] = emptyStrFunc(securityRet.Response.PgwEndpoint) - infoMap["security_policy"] = policies - - config, err := service.DescribeClusterConfig(ctx, info.ClusterId, true) - if err != nil { - err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - config, err = service.DescribeClusterConfig(ctx, d.Id(), true) - if err != nil { - return tccommon.RetryError(err) + if clusters.ClusterNetworkSettings.ServiceCIDR != nil { + clustersMap["service_cidr"] = clusters.ClusterNetworkSettings.ServiceCIDR } - return nil - }) - } - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error()) - return err - } - intranetConfig, err := service.DescribeClusterConfig(ctx, info.ClusterId, false) - if err != nil { - err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - config, err = service.DescribeClusterConfig(ctx, d.Id(), false) - if err != nil { - return tccommon.RetryError(err) + if clusters.ClusterNetworkSettings.Subnets != nil { + clustersMap["eni_subnet_ids"] = clusters.ClusterNetworkSettings.Subnets } - return nil - }) - } - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error()) - return err - } - infoMap["kube_config"] = config - infoMap["kube_config_intranet"] = intranetConfig + } - clusterInternet, err := getClusterNetworkStatus(ctx, &service, info.ClusterId, true) - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters get cluster internet status fail, reason:%s\n ", logId, err.Error()) - return err - } - clusterIntranet, err := getClusterNetworkStatus(ctx, &service, info.ClusterId, false) - if err != nil { - log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters get cluster intranet status fail, reason:%s\n ", logId, err.Error()) - return err - } + if clusters.DeletionProtection != nil { + clustersMap["deletion_protection"] = clusters.DeletionProtection + } - if kubeConfigFilePrefix != "" { - if clusterInternet { - kubeConfigFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig", info.ClusterId) - if err = tccommon.WriteToFile(kubeConfigFile, config); err != nil { - return err - } + if clusters.ProjectId != nil { + clustersMap["project_id"] = clusters.ProjectId } - if clusterIntranet { - kubeConfigIntranetFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig-intranet", info.ClusterId) - if err = tccommon.WriteToFile(kubeConfigIntranetFile, intranetConfig); err != nil { - return err - } + + if clusters.ClusterNodeNum != nil { + clustersMap["cluster_node_num"] = clusters.ClusterNodeNum } + + ids = append(ids, clusterID) + clustersList = append(clustersList, clustersMap) } - list = append(list, infoMap) + _ = d.Set("list", clustersList) } - d.SetId("KubernetesClusters" + name + id) - err = d.Set("list", list) - if err != nil { - log.Printf("[CRITAL]%s provider set tencentcloud_kubernetes_clusters list fail, reason:%s\n ", logId, err.Error()) + if err := dataSourceTencentCloudKubernetesClustersReadPostHandleResponse0(ctx, paramMap, &respData); err != nil { return err } + d.SetId(helper.DataResourceIdsHash(ids)) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err = tccommon.WriteToFile(output.(string), list); err != nil { - return err + if e := tccommon.WriteToFile(output.(string), dataSourceTencentCloudKubernetesClustersReadOutputContent(ctx)); e != nil { + return e } } - return nil -} -func getClusterNetworkStatus(ctx context.Context, service *TkeService, clusterId string, isInternet bool) (networkStatus bool, err error) { - var status string - var isOpened bool - var errRet error - err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - status, _, errRet = service.DescribeClusterEndpointStatus(ctx, clusterId, isInternet) - if errRet != nil { - return tccommon.RetryError(errRet, tccommon.InternalError) - } - if status == TkeInternetStatusCreating || status == TkeInternetStatusDeleting { - return resource.RetryableError( - fmt.Errorf("%s create cluster internet endpoint status still is %s", clusterId, status)) - } - return nil - }) - if err != nil { - return false, err - } - if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted { - isOpened = false - } - if status == TkeInternetStatusCreated { - isOpened = true - } - networkStatus = isOpened - - return networkStatus, nil + return nil } diff --git a/tencentcloud/services/tke/data_source_tc_kubernetes_clusters_extension.go b/tencentcloud/services/tke/data_source_tc_kubernetes_clusters_extension.go new file mode 100644 index 0000000000..af5180181c --- /dev/null +++ b/tencentcloud/services/tke/data_source_tc_kubernetes_clusters_extension.go @@ -0,0 +1,302 @@ +package tke + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func dataSourceTencentCloudKubernetesClustersReadPreRequest0(ctx context.Context, req *tke.DescribeClustersRequest) error { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + + var clusterID string + if v, ok := d.GetOk("cluster_id"); ok { + clusterID = v.(string) + } + var clusterName string + if v, ok := d.GetOk("cluster_name"); ok { + clusterName = v.(string) + } + if clusterID != "" && clusterName != "" { + return fmt.Errorf("cluster_id, cluster_name only one can be set one") + } + if clusterID != "" { + req.ClusterIds = []*string{&clusterID} + } + if clusterName != "" { + filter := &tke.Filter{ + Name: helper.String("ClusterName"), + Values: []*string{&clusterName}, + } + req.Filters = []*tke.Filter{filter} + } + + return nil +} + +func dataSourceTencentCloudKubernetesClustersReadPreHandleResponse0(ctx context.Context, req map[string]interface{}, resp *[]*tke.Cluster) error { + if resp == nil { + return nil + } + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + tags := helper.GetTags(d, "tags") + if len(tags) == 0 { + return nil + } + + // 通过标签过滤 + var newResp []*tke.Cluster +clsLoop: + for _, cls := range *resp { + clsTags := map[string]string{} + // 建立 cls tag 的索引 + if len(cls.TagSpecification) > 0 { + for _, tag := range cls.TagSpecification[0].Tags { + clsTags[*tag.Key] = *tag.Value + } + } + // 比对是否包含指定的 tag ,以及值是否一致 + for k, v := range tags { + if clsTags[k] != v { + continue clsLoop + } + } + + newResp = append(newResp, cls) + } + *resp = newResp + return nil +} + +func dataSourceTencentCloudKubernetesClustersReadPostHandleResponse0(ctx context.Context, req map[string]interface{}, resp *[]*tke.Cluster) error { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + meta := tccommon.ProviderMetaFromContext(ctx) + if meta == nil { + return fmt.Errorf("provider meta can not be nil") + } + logID := tccommon.GetLogId(ctx) + service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + list, ok := d.GetOk("list") + if !ok { + return nil + } + listSlice, ok := list.([]interface{}) + if !ok { + return nil + } + for i, v := range listSlice { + clsData, ok := v.(map[string]interface{}) + if !ok { + continue + } + clsData["cluster_os"] = tkeToShowClusterOs(clsData["cluster_os"].(string)) + clsData["cluster_deploy_type"] = strings.ToUpper(clsData["cluster_deploy_type"].(string)) + + clusterID := clsData["cluster_id"].(string) + + // 获取集群节点信息 + _, nodes, err := service.DescribeClusterInstances(ctx, clusterID) + if err != nil { + _, nodes, err = service.DescribeClusterInstances(ctx, clusterID) + } + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + workerInstancesList := make([]map[string]interface{}, 0, len(nodes)) + for _, node := range nodes { + tempMap := make(map[string]interface{}) + tempMap["instance_id"] = node.InstanceId + tempMap["instance_role"] = node.InstanceRole + tempMap["instance_state"] = node.InstanceState + tempMap["failed_reason"] = node.FailedReason + tempMap["lan_ip"] = node.LanIp + workerInstancesList = append(workerInstancesList, tempMap) + } + clsData["worker_instances_list"] = workerInstancesList + + // 获取集群安全信息 + securityRet, err := service.DescribeClusterSecurity(ctx, clusterID) + if err != nil { + securityRet, err = service.DescribeClusterSecurity(ctx, clusterID) + } + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterSecurity fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + policies := make([]string, 0, len(securityRet.Response.SecurityPolicy)) + for _, v := range securityRet.Response.SecurityPolicy { + policies = append(policies, *v) + } + clsData["user_name"] = helper.PString(securityRet.Response.UserName) + clsData["password"] = helper.PString(securityRet.Response.Password) + clsData["certification_authority"] = helper.PString(securityRet.Response.CertificationAuthority) + clsData["cluster_external_endpoint"] = helper.PString(securityRet.Response.ClusterExternalEndpoint) + clsData["domain"] = helper.PString(securityRet.Response.Domain) + clsData["pgw_endpoint"] = helper.PString(securityRet.Response.PgwEndpoint) + clsData["security_policy"] = policies + + // 获取集群连接凭证 + config, err := service.DescribeClusterConfig(ctx, clusterID, true) + if err != nil { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + config, err = service.DescribeClusterConfig(ctx, d.Id(), true) + if err != nil { + return tccommon.RetryError(err) + } + return nil + }) + } + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + intranetConfig, err := service.DescribeClusterConfig(ctx, clusterID, false) + if err != nil { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + config, err = service.DescribeClusterConfig(ctx, d.Id(), false) + if err != nil { + return tccommon.RetryError(err) + } + return nil + }) + } + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + clsData["kube_config"] = config + clsData["kube_config_intranet"] = intranetConfig + clusterInternet, err := getClusterNetworkStatus(ctx, &service, clusterID, true) + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters get cluster internet status fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + clusterIntranet, err := getClusterNetworkStatus(ctx, &service, clusterID, false) + if err != nil { + log.Printf( + "[CRITAL]%s tencentcloud_kubernetes_clusters get cluster intranet status fail, reason:%s\n ", + logID, err.Error(), + ) + return err + } + if v, ok := d.GetOk("kube_config_file_prefix"); ok { + kubeConfigFilePrefix := v.(string) + if clusterInternet { + kubeConfigFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig", clsData) + if err = tccommon.WriteToFile(kubeConfigFile, config); err != nil { + return err + } + } + if clusterIntranet { + kubeConfigIntranetFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig-intranet", clusterID) + if err = tccommon.WriteToFile(kubeConfigIntranetFile, intranetConfig); err != nil { + return err + } + } + } + + if len(*resp) <= i { + continue + } + cls := (*resp)[i] + + // 获取 vpc_cni_type + property, err := helper.JsonToMap(*cls.Property) + if err != nil { + return err + } + if property["VpcCniType"] != nil { + clsData["vpc_cni_type"] = property["VpcCniType"].(string) + } + + // 获取 tags + if len(cls.TagSpecification) > 0 { + tags := map[string]string{} + for _, tag := range cls.TagSpecification[0].Tags { + tags[*tag.Key] = *tag.Value + } + clsData["tags"] = tags + } + + // cluster_extra_args + clsData["cluster_extra_args"] = []map[string]interface{}{{ + "kube_apiserver": []string(nil), + "kube_controller_manager": []string(nil), + "kube_scheduler": []string(nil), + }} + } + + _ = d.Set("list", listSlice) + + return nil +} + +func getClusterNetworkStatus(ctx context.Context, service *TkeService, clusterId string, isInternet bool) (networkStatus bool, err error) { + var status string + var isOpened bool + var errRet error + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + status, _, errRet = service.DescribeClusterEndpointStatus(ctx, clusterId, isInternet) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + if status == TkeInternetStatusCreating || status == TkeInternetStatusDeleting { + return resource.RetryableError( + fmt.Errorf("%s create cluster internet endpoint status still is %s", clusterId, status)) + } + return nil + }) + if err != nil { + return false, err + } + if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted { + isOpened = false + } + if status == TkeInternetStatusCreated { + isOpened = true + } + networkStatus = isOpened + + return networkStatus, nil +} + +func dataSourceTencentCloudKubernetesClustersReadOutputContent(ctx context.Context) interface{} { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return []interface{}(nil) + } + return d.Get("list") +} diff --git a/tencentcloud/services/tke/tencentcloud_sweeper_test.go b/tencentcloud/services/tke/resource_test.go similarity index 100% rename from tencentcloud/services/tke/tencentcloud_sweeper_test.go rename to tencentcloud/services/tke/resource_test.go diff --git a/tencentcloud/services/tke/service_tencentcloud_tke.go b/tencentcloud/services/tke/service_tencentcloud_tke.go index 683d1b8c6f..2169fe08de 100644 --- a/tencentcloud/services/tke/service_tencentcloud_tke.go +++ b/tencentcloud/services/tke/service_tencentcloud_tke.go @@ -2691,7 +2691,7 @@ func (me *TkeService) TkeEncryptionProtectionStateRefreshFunc(clusterId string, } } -func (me *TkeService) DescribeKubernetesClusterInstancesByFilter(ctx context.Context, param map[string]interface{}) (clusterInstances []*tke.Instance, errRet error) { +func (me *TkeService) DescribeKubernetesClusterInstancesByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.Instance, errRet error) { var ( logId = tccommon.GetLogId(ctx) request = tke.NewDescribeClusterInstancesRequest() @@ -2718,18 +2718,15 @@ func (me *TkeService) DescribeKubernetesClusterInstancesByFilter(ctx context.Con } } - var offset int64 = 0 - var limit int64 = 100 - var total int64 = -1 + ratelimit.Check(request.GetAction()) + var ( + offset int64 = 0 + limit int64 = 100 + ) for { - if total >= 0 && offset >= total { - break - } request.Offset = &offset request.Limit = &limit - ratelimit.Check(request.GetAction()) - response, err := me.client.UseTkeClient().DescribeClusterInstances(request) if err != nil { errRet = err @@ -2737,23 +2734,21 @@ func (me *TkeService) DescribeKubernetesClusterInstancesByFilter(ctx context.Con } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if total < 0 { - total = int64(*response.Response.TotalCount) + if response == nil || len(response.Response.InstanceSet) < 1 { + break } - - if len(response.Response.InstanceSet) == 0 { - // get empty set, we're done + ret = append(ret, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { break } offset += limit - - clusterInstances = append(clusterInstances, response.Response.InstanceSet...) } + return } -func (me *TkeService) DescribeKubernetesClusterNodePoolsByFilter(ctx context.Context, param map[string]interface{}) (clusterNodePools []*tke.NodePool, errRet error) { +func (me *TkeService) DescribeKubernetesClusterNodePoolsByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.NodePool, errRet error) { var ( logId = tccommon.GetLogId(ctx) request = tke.NewDescribeClusterNodePoolsRequest() @@ -2787,7 +2782,7 @@ func (me *TkeService) DescribeKubernetesClusterNodePoolsByFilter(ctx context.Con return } - clusterNodePools = response.Response.NodePoolSet + ret = response.Response.NodePoolSet return } @@ -2820,3 +2815,186 @@ func (me *TkeService) DescribeKubernetesAddonById(ctx context.Context, clusterId ret = response.Response.Addons[0] return } + +func (me *TkeService) DescribeKubernetesClustersByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.Cluster, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClustersRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + if err := dataSourceTencentCloudKubernetesClustersReadPreRequest0(ctx, request); err != nil { + return nil, err + } + + response, err := me.client.UseTkeClient().DescribeClusters(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Clusters) < 1 { + return + } + + ret = response.Response.Clusters + return +} + +func (me *TkeService) DescribeKubernetesClusterLevelsByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.ClusterLevelAttribute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClusterLevelAttributeRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "ClusterID" { + request.ClusterID = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeClusterLevelAttribute(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Items) < 1 { + return + } + + ret = response.Response.Items + return +} + +func (me *TkeService) DescribeKubernetesClusterCommonNamesByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.CommonName, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClusterCommonNamesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "ClusterId" { + request.ClusterId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + if err := dataSourceTencentCloudKubernetesClusterCommonNamesReadPreRequest0(ctx, request); err != nil { + return nil, err + } + + response, err := me.client.UseTkeClient().DescribeClusterCommonNames(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.CommonNames) < 1 { + return + } + + ret = response.Response.CommonNames + return +} + +func (me *TkeService) DescribeKubernetesClusterAuthenticationOptionsByFilter(ctx context.Context, param map[string]interface{}) (ret *tke.DescribeClusterAuthenticationOptionsResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClusterAuthenticationOptionsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "ClusterId" { + request.ClusterId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeClusterAuthenticationOptions(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil { + return + } + + ret = response.Response + return +} + +func (me *TkeService) DescribeKubernetesChartsByFilter(ctx context.Context, param map[string]interface{}) (ret []*tke.AppChart, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewGetTkeAppChartListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Kind" { + request.Kind = v.(*string) + } + if k == "Arch" { + request.Arch = v.(*string) + } + if k == "ClusterType" { + request.ClusterType = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().GetTkeAppChartList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AppCharts) < 1 { + return + } + + ret = response.Response.AppCharts + return +} diff --git a/website/docs/d/kubernetes_cluster_common_names.html.markdown b/website/docs/d/kubernetes_cluster_common_names.html.markdown index 865aece4dd..429b43cc2f 100644 --- a/website/docs/d/kubernetes_cluster_common_names.html.markdown +++ b/website/docs/d/kubernetes_cluster_common_names.html.markdown @@ -25,7 +25,7 @@ data "tencentcloud_kubernetes_cluster_common_names" "foo" { The following arguments are supported: * `cluster_id` - (Optional, String) Cluster ID. -* `result_output_file` - (Optional, String) Used for save result. +* `result_output_file` - (Optional, String) Used to save results. * `role_ids` - (Optional, List: [`String`]) List of Role ID. Up to 50 sub-accounts can be passed in at a time. * `subaccount_uins` - (Optional, List: [`String`]) List of sub-account. Up to 50 sub-accounts can be passed in at a time. diff --git a/website/docs/d/kubernetes_cluster_levels.html.markdown b/website/docs/d/kubernetes_cluster_levels.html.markdown index 79b9074734..9f3398fb47 100644 --- a/website/docs/d/kubernetes_cluster_levels.html.markdown +++ b/website/docs/d/kubernetes_cluster_levels.html.markdown @@ -26,7 +26,7 @@ output "level5" { The following arguments are supported: * `cluster_id` - (Optional, String) Specify cluster Id, if set will only query current cluster's available levels. -* `result_output_file` - (Optional, String) Used for save result. +* `result_output_file` - (Optional, String) Used to save results. ## Attributes Reference