|
| 1 | +/* |
| 2 | +Copyright © 2023 VMware, Inc. All Rights Reserved. |
| 3 | +SPDX-License-Identifier: MPL-2.0 |
| 4 | +*/ |
| 5 | + |
| 6 | +package dataprotection |
| 7 | + |
| 8 | +import ( |
| 9 | + tfModelConverterHelper "github.com/vmware/terraform-provider-tanzu-mission-control/internal/helper/converter" |
| 10 | + dataprotectionmodels "github.com/vmware/terraform-provider-tanzu-mission-control/internal/models/cluster/dataprotection" |
| 11 | + dataprotectioncgmodels "github.com/vmware/terraform-provider-tanzu-mission-control/internal/models/clustergroup/dataprotection" |
| 12 | + "github.com/vmware/terraform-provider-tanzu-mission-control/internal/resources/common" |
| 13 | + "github.com/vmware/terraform-provider-tanzu-mission-control/internal/resources/dataprotection/scope" |
| 14 | +) |
| 15 | + |
| 16 | +var ( |
| 17 | + matchExpressionsArrayField = tfModelConverterHelper.BuildArrayField("matchExpressions") |
| 18 | +) |
| 19 | + |
| 20 | +func getTFModelConverterCluster() tfModelConverterHelper.TFSchemaModelConverter[*dataprotectionmodels.VmwareTanzuManageV1alpha1ClusterDataprotectionDataProtection] { |
| 21 | + return tfModelConverterHelper.TFSchemaModelConverter[*dataprotectionmodels.VmwareTanzuManageV1alpha1ClusterDataprotectionDataProtection]{ |
| 22 | + TFModelMap: getTFModelMapCommon(false), |
| 23 | + } |
| 24 | +} |
| 25 | + |
| 26 | +func getTFModelConverterClusterGroup() tfModelConverterHelper.TFSchemaModelConverter[*dataprotectioncgmodels.VmwareTanzuManageV1alpha1ClustergroupDataprotectionDataProtection] { |
| 27 | + return tfModelConverterHelper.TFSchemaModelConverter[*dataprotectioncgmodels.VmwareTanzuManageV1alpha1ClustergroupDataprotectionDataProtection]{ |
| 28 | + TFModelMap: getTFModelMapCommon(true), |
| 29 | + } |
| 30 | +} |
| 31 | + |
| 32 | +func getTFModelMapCommon(forClusterGroup bool) *tfModelConverterHelper.BlockToStruct { |
| 33 | + var specBlock *tfModelConverterHelper.BlockToStruct |
| 34 | + if forClusterGroup { |
| 35 | + specBlock = &tfModelConverterHelper.BlockToStruct{ |
| 36 | + DisableResticKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "atomicSpec", "disableRestic"), |
| 37 | + EnableCSISnapshotsKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "atomicSpec", "enableCsiSnapshots"), |
| 38 | + EnableAllAPIGroupVersionsBackupKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "atomicSpec", "enableAllApiGroupVersionsBackup"), |
| 39 | + SelectorKey: &tfModelConverterHelper.BlockToStruct{ |
| 40 | + NamesKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "selector", "names"), |
| 41 | + ExcludedNamesKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "selector", "excludedNames"), |
| 42 | + LabelSelectorKey: &tfModelConverterHelper.BlockToStruct{ |
| 43 | + MatchExpressionsKey: &tfModelConverterHelper.BlockSliceToStructSlice{ |
| 44 | + { |
| 45 | + KeyKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "selector", "labelSelector", matchExpressionsArrayField, "key"), |
| 46 | + OperatorKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "selector", "labelSelector", matchExpressionsArrayField, "operator"), |
| 47 | + ValuesKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "selector", "labelSelector", matchExpressionsArrayField, "values"), |
| 48 | + }, |
| 49 | + }, |
| 50 | + }, |
| 51 | + }, |
| 52 | + } |
| 53 | + } else { |
| 54 | + specBlock = &tfModelConverterHelper.BlockToStruct{ |
| 55 | + DisableResticKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "disableRestic"), |
| 56 | + EnableCSISnapshotsKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "enableCsiSnapshots"), |
| 57 | + EnableAllAPIGroupVersionsBackupKey: tfModelConverterHelper.BuildDefaultModelPath("spec", "enableAllApiGroupVersionsBackup"), |
| 58 | + } |
| 59 | + } |
| 60 | + |
| 61 | + return &tfModelConverterHelper.BlockToStruct{ |
| 62 | + scope.ScopeKey: &tfModelConverterHelper.BlockToStruct{ |
| 63 | + scope.ClusterKey: &tfModelConverterHelper.BlockToStruct{ |
| 64 | + scope.ClusterNameKey: tfModelConverterHelper.BuildDefaultModelPath("fullName", "clusterName"), |
| 65 | + scope.ManagementClusterNameKey: tfModelConverterHelper.BuildDefaultModelPath("fullName", "managementClusterName"), |
| 66 | + scope.ProvisionerNameKey: tfModelConverterHelper.BuildDefaultModelPath("fullName", "provisionerName"), |
| 67 | + }, |
| 68 | + scope.ClusterGroupKey: &tfModelConverterHelper.BlockToStruct{ |
| 69 | + scope.ClusterGroupNameKey: tfModelConverterHelper.BuildDefaultModelPath("fullName", "clusterGroupName"), |
| 70 | + }, |
| 71 | + }, |
| 72 | + common.MetaKey: common.GetMetaConverterMap(tfModelConverterHelper.DefaultModelPathSeparator), |
| 73 | + SpecKey: specBlock, |
| 74 | + } |
| 75 | +} |
0 commit comments