Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion spectrocloud/cluster_common_fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func readCommonFields(c *client.V1Client, d *schema.ResourceData, cluster *model
if policy, err := c.GetClusterBackupConfig(d.Id()); err != nil {
return diag.FromErr(err), true
} else if policy != nil && policy.Spec.Config != nil {
if err := d.Set("backup_policy", flattenBackupPolicy(policy.Spec.Config)); err != nil {
if err := d.Set("backup_policy", flattenBackupPolicy(policy.Spec.Config, d)); err != nil {
return diag.FromErr(err), true
}
}
Expand Down
14 changes: 11 additions & 3 deletions spectrocloud/cluster_common_policies.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func convertIncludeResourceMode(m string) (mode models.V1IncludeClusterResourceM
return ""
}

func flattenBackupPolicy(policy *models.V1ClusterBackupConfig) []interface{} {
func flattenBackupPolicy(policy *models.V1ClusterBackupConfig, d *schema.ResourceData) []interface{} {
result := make([]interface{}, 0, 1)
data := make(map[string]interface{})
data["schedule"] = policy.Schedule.ScheduledRunTime
Expand All @@ -80,8 +80,16 @@ func flattenBackupPolicy(policy *models.V1ClusterBackupConfig) []interface{} {
data["namespaces"] = policy.Namespaces
data["expiry_in_hour"] = policy.DurationInHours
data["include_disks"] = policy.IncludeAllDisks
data["include_cluster_resources"] = flattenIncludeResourceMode(policy.IncludeClusterResourceMode)
data["include_cluster_resources_mode"] = policy.IncludeClusterResourceMode

if policies, found := d.GetOk("backup_policy"); found {
bPolicy := policies.([]interface{})[0].(map[string]interface{})
if bPolicy["include_cluster_resources_mode"] != "" {
data["include_cluster_resources_mode"] = strings.ToLower(string(policy.IncludeClusterResourceMode))
data["include_cluster_resources"] = true
} else {
data["include_cluster_resources"] = flattenIncludeResourceMode(policy.IncludeClusterResourceMode)
}
}
result = append(result, data)
return result
}
Expand Down
18 changes: 8 additions & 10 deletions spectrocloud/cluster_policies_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,16 @@ func TestFlattenBackupPolicy(t *testing.T) {

expected := []interface{}{
map[string]interface{}{
"schedule": "daily",
"backup_location_id": "location-123",
"prefix": "backup-prefix",
"namespaces": []string{"namespace1", "namespace2"},
"expiry_in_hour": int64(24),
"include_disks": true,
"include_cluster_resources": false,
"include_cluster_resources_mode": models.V1IncludeClusterResourceMode(""),
"schedule": "daily",
"backup_location_id": "location-123",
"prefix": "backup-prefix",
"namespaces": []string{"namespace1", "namespace2"},
"expiry_in_hour": int64(24),
"include_disks": true,
},
}

result := flattenBackupPolicy(policy)
resourceData := resourceClusterAws().TestResourceData()
result := flattenBackupPolicy(policy, resourceData)
assert.Equal(t, expected, result)
}

Expand Down
2 changes: 1 addition & 1 deletion spectrocloud/resource_workspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func resourceWorkspaceRead(_ context.Context, d *schema.ResourceData, m interfac
if err != nil {
return diag.FromErr(err)
}
if err := d.Set("backup_policy", flattenWorkspaceBackupPolicy(backup)); err != nil {
if err := d.Set("backup_policy", flattenWorkspaceBackupPolicy(backup, d)); err != nil {
return diag.FromErr(err)
}

Expand Down
9 changes: 5 additions & 4 deletions spectrocloud/schemas/backup_policy.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ func BackupPolicySchema() *schema.Schema {
Description: "Whether to include the disks in the backup. If set to false, only the cluster configuration will be backed up.",
},
"include_cluster_resources": {
Type: schema.TypeBool,
Optional: true,
Default: true,
Description: "Indicates whether to include cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. (Note: Starting with Palette version 4.6, the include_cluster_resources attribute will be deprecated, and a new attribute, include_cluster_resources_mode, will be introduced.)",
Type: schema.TypeBool,
Optional: true,
Default: true,
ConflictsWith: []string{"backup_policy.0.include_cluster_resources_mode"},
Description: "Indicates whether to include cluster resources in the backup. If set to false, only the cluster configuration and disks will be backed up. (Note: Starting with Palette version 4.6, the include_cluster_resources attribute will be deprecated, and a new attribute, include_cluster_resources_mode, will be introduced.)",
},
"include_cluster_resources_mode": {
Type: schema.TypeString,
Expand Down
6 changes: 3 additions & 3 deletions spectrocloud/workspace_common.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package spectrocloud

import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/spectrocloud/palette-sdk-go/api/models"
)

Expand All @@ -24,13 +25,12 @@ func flattenWorkspaceClusters(workspace *models.V1Workspace) []interface{} {
}
}

func flattenWorkspaceBackupPolicy(backup *models.V1WorkspaceBackup) []interface{} {
func flattenWorkspaceBackupPolicy(backup *models.V1WorkspaceBackup, d *schema.ResourceData) []interface{} {
result := make([]interface{}, 0, 1)
if backup.Spec.Config == nil && backup.Spec.Config.BackupConfig == nil {
return result
}

result = flattenBackupPolicy(backup.Spec.Config.BackupConfig)
result = flattenBackupPolicy(backup.Spec.Config.BackupConfig, d)
data := result[0].(map[string]interface{})
data["cluster_uids"] = backup.Spec.Config.ClusterUids
data["include_all_clusters"] = backup.Spec.Config.IncludeAllClusters
Expand Down
4 changes: 2 additions & 2 deletions spectrocloud/workspace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ func TestFlattenWorkspaceBackupPolicy(t *testing.T) {
},
},
}

_ = flattenWorkspaceBackupPolicy(backup)
resourceData := resourceWorkspace().TestResourceData()
_ = flattenWorkspaceBackupPolicy(backup, resourceData)
}

func TestFlattenWorkspaceClusterNamespaces(t *testing.T) {
Expand Down
Loading