Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

INTDMB-223: Updated Cloud Backup to SDK v2 #507

Merged
merged 1 commit into from
Aug 6, 2021
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
30 changes: 15 additions & 15 deletions mongodbatlas/data_source_mongodbatlas_cloud_backup_schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ package mongodbatlas

import (
"context"
"fmt"

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

// Note: the schema is the same as dataSourceMongoDBAtlasCloudProviderSnapshotBackupPolicy
// see documentation at https://docs.atlas.mongodb.com/reference/api/cloud-backup/schedule/get-all-schedules/
func dataSourceMongoDBAtlasCloudBackupSchedule() *schema.Resource {
return &schema.Resource{
Read: dataSourceMongoDBAtlasCloudBackupScheduleRead,
ReadContext: dataSourceMongoDBAtlasCloudBackupScheduleRead,
Schema: map[string]*schema.Schema{
"project_id": {
Type: schema.TypeString,
Expand Down Expand Up @@ -163,55 +163,55 @@ func dataSourceMongoDBAtlasCloudBackupSchedule() *schema.Resource {

// Almost the same as dataSourceMongoDBAtlasCloudProviderSnapshotBackupPolicyRead
// just do not save the update_snapshots because is not specified in the DS
func dataSourceMongoDBAtlasCloudBackupScheduleRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceMongoDBAtlasCloudBackupScheduleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*MongoDBClient).Atlas

projectID := d.Get("project_id").(string)
clusterName := d.Get("cluster_name").(string)

backupPolicy, _, err := conn.CloudProviderSnapshotBackupPolicies.Get(context.Background(), projectID, clusterName)
backupPolicy, _, err := conn.CloudProviderSnapshotBackupPolicies.Get(ctx, projectID, clusterName)
if err != nil {
return fmt.Errorf(errorSnapshotBackupPolicyRead, clusterName, err)
return diag.Errorf(errorSnapshotBackupPolicyRead, clusterName, err)
}

if err := d.Set("cluster_id", backupPolicy.ClusterID); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "cluster_id", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "cluster_id", clusterName, err)
}

if err := d.Set("reference_hour_of_day", backupPolicy.ReferenceHourOfDay); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "reference_hour_of_day", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "reference_hour_of_day", clusterName, err)
}

if err := d.Set("reference_minute_of_hour", backupPolicy.ReferenceMinuteOfHour); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "reference_minute_of_hour", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "reference_minute_of_hour", clusterName, err)
}

if err := d.Set("restore_window_days", backupPolicy.RestoreWindowDays); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "restore_window_days", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "restore_window_days", clusterName, err)
}

if err := d.Set("next_snapshot", backupPolicy.NextSnapshot); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "next_snapshot", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "next_snapshot", clusterName, err)
}

if err := d.Set("id_policy", backupPolicy.Policies[0].ID); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "id_policy", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "id_policy", clusterName, err)
}

if err := d.Set("policy_item_hourly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleHourly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_hourly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_hourly", clusterName, err)
}

if err := d.Set("policy_item_daily", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleDaily)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_daily", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_daily", clusterName, err)
}

if err := d.Set("policy_item_weekly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleWeekly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_weekly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_weekly", clusterName, err)
}

if err := d.Set("policy_item_monthly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleMonthly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_monthly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_monthly", clusterName, err)
}

d.SetId(encodeStateID(map[string]string{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ func TestAccdataSourceMongoDBAtlasCloudBackupSchedule_basic(t *testing.T) {
)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
Steps: []resource.TestStep{
{
Config: testAccDataSourceMongoDBAtlasCloudBackupScheduleConfig(projectID, clusterName, &matlas.CloudProviderSnapshotBackupPolicy{
Expand Down Expand Up @@ -54,9 +54,9 @@ func TestAccdataSourceMongoDBAtlasCloudBackupSchedule_withOnePolicy(t *testing.T
)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
Steps: []resource.TestStep{
{
Config: testAccDataSourceMongoDBAtlasCloudBackupScheduleWithPoliciesConfig(projectID, clusterName, &matlas.CloudProviderSnapshotBackupPolicy{
Expand Down
72 changes: 36 additions & 36 deletions mongodbatlas/resource_mongodbatlas_cloud_backup_schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import (
"fmt"
"strings"

"github.com/spf13/cast"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/mwielbut/pointy"
"github.com/spf13/cast"
matlas "go.mongodb.org/atlas/mongodbatlas"
)

Expand All @@ -28,12 +28,12 @@ const (
// same as resourceMongoDBAtlasCloudProviderSnapshotBackupPolicy
func resourceMongoDBAtlasCloudBackupSchedule() *schema.Resource {
return &schema.Resource{
Create: resourceMongoDBAtlasCloudBackupScheduleCreate,
Read: resourceMongoDBAtlasCloudBackupScheduleRead,
Update: resourceMongoDBAtlasCloudBackupScheduleUpdate,
Delete: resourceMongoDBAtlasCloudBackupScheduleDelete,
CreateContext: resourceMongoDBAtlasCloudBackupScheduleCreate,
ReadContext: resourceMongoDBAtlasCloudBackupScheduleRead,
UpdateContext: resourceMongoDBAtlasCloudBackupScheduleUpdate,
DeleteContext: resourceMongoDBAtlasCloudBackupScheduleDelete,
Importer: &schema.ResourceImporter{
State: resourceMongoDBAtlasCloudBackupScheduleImportState,
StateContext: resourceMongoDBAtlasCloudBackupScheduleImportState,
},

Schema: map[string]*schema.Schema{
Expand Down Expand Up @@ -214,25 +214,25 @@ func resourceMongoDBAtlasCloudBackupSchedule() *schema.Resource {
}
}

func resourceMongoDBAtlasCloudBackupScheduleCreate(d *schema.ResourceData, meta interface{}) error {
func resourceMongoDBAtlasCloudBackupScheduleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*MongoDBClient).Atlas
projectID := d.Get("project_id").(string)
clusterName := d.Get("cluster_name").(string)

err := cloudBackupScheduleCreateOrUpdate(conn, d, projectID, clusterName)
err := cloudBackupScheduleCreateOrUpdate(ctx, conn, d, projectID, clusterName)
if err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleCreate, err)
return diag.Errorf(errorSnapshotBackupScheduleCreate, err)
}

d.SetId(encodeStateID(map[string]string{
"project_id": projectID,
"cluster_name": clusterName,
}))

return resourceMongoDBAtlasCloudBackupScheduleRead(d, meta)
return resourceMongoDBAtlasCloudBackupScheduleRead(ctx, d, meta)
}

func resourceMongoDBAtlasCloudBackupScheduleRead(d *schema.ResourceData, meta interface{}) error {
func resourceMongoDBAtlasCloudBackupScheduleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
// Get client connection.
conn := meta.(*MongoDBClient).Atlas

Expand All @@ -242,57 +242,57 @@ func resourceMongoDBAtlasCloudBackupScheduleRead(d *schema.ResourceData, meta in

backupPolicy, _, err := conn.CloudProviderSnapshotBackupPolicies.Get(context.Background(), projectID, clusterName)
if err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleRead, clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleRead, clusterName, err)
}

if err := d.Set("cluster_id", backupPolicy.ClusterID); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "cluster_id", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "cluster_id", clusterName, err)
}

if err := d.Set("reference_hour_of_day", backupPolicy.ReferenceHourOfDay); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "reference_hour_of_day", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "reference_hour_of_day", clusterName, err)
}

if err := d.Set("reference_minute_of_hour", backupPolicy.ReferenceMinuteOfHour); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "reference_minute_of_hour", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "reference_minute_of_hour", clusterName, err)
}

if err := d.Set("restore_window_days", backupPolicy.RestoreWindowDays); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "restore_window_days", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "restore_window_days", clusterName, err)
}

if err := d.Set("update_snapshots", backupPolicy.UpdateSnapshots); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "update_snapshots", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "update_snapshots", clusterName, err)
}

if err := d.Set("next_snapshot", backupPolicy.NextSnapshot); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "next_snapshot", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "next_snapshot", clusterName, err)
}

if err := d.Set("id_policy", backupPolicy.Policies[0].ID); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "id_policy", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "id_policy", clusterName, err)
}

if err := d.Set("policy_item_hourly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleHourly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_hourly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_hourly", clusterName, err)
}

if err := d.Set("policy_item_daily", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleDaily)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_daily", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_daily", clusterName, err)
}

if err := d.Set("policy_item_weekly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleWeekly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_weekly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_weekly", clusterName, err)
}

if err := d.Set("policy_item_monthly", flattenPolicyItem(backupPolicy.Policies[0].PolicyItems, snapshotScheduleMonthly)); err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_monthly", clusterName, err)
return diag.Errorf(errorSnapshotBackupScheduleSetting, "policy_item_monthly", clusterName, err)
}

return nil
}

func resourceMongoDBAtlasCloudBackupScheduleUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceMongoDBAtlasCloudBackupScheduleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*MongoDBClient).Atlas

ids := decodeStateID(d.Id())
Expand All @@ -301,34 +301,34 @@ func resourceMongoDBAtlasCloudBackupScheduleUpdate(d *schema.ResourceData, meta

if restoreWindowDays, ok := d.GetOk("restore_window_days"); ok {
if cast.ToInt64(restoreWindowDays) <= 0 {
return fmt.Errorf("`restore_window_days` cannot be <= 0")
return diag.Errorf("`restore_window_days` cannot be <= 0")
}
}

err := cloudBackupScheduleCreateOrUpdate(conn, d, projectID, clusterName)
err := cloudBackupScheduleCreateOrUpdate(ctx, conn, d, projectID, clusterName)
if err != nil {
return fmt.Errorf(errorSnapshotBackupScheduleUpdate, err)
return diag.Errorf(errorSnapshotBackupScheduleUpdate, err)
}

return resourceMongoDBAtlasCloudBackupScheduleRead(d, meta)
return resourceMongoDBAtlasCloudBackupScheduleRead(ctx, d, meta)
}

func resourceMongoDBAtlasCloudBackupScheduleDelete(d *schema.ResourceData, meta interface{}) error {
func resourceMongoDBAtlasCloudBackupScheduleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
// Get client connection.
conn := meta.(*MongoDBClient).Atlas
ids := decodeStateID(d.Id())
projectID := ids["project_id"]
clusterName := ids["cluster_name"]

_, _, err := conn.CloudProviderSnapshotBackupPolicies.Delete(context.Background(), projectID, clusterName)
_, _, err := conn.CloudProviderSnapshotBackupPolicies.Delete(ctx, projectID, clusterName)
if err != nil {
return fmt.Errorf("error deleting MongoDB Cloud Backup Schedule (%s): %s", clusterName, err)
return diag.Errorf("error deleting MongoDB Cloud Backup Schedule (%s): %s", clusterName, err)
}

return nil
}

func resourceMongoDBAtlasCloudBackupScheduleImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
func resourceMongoDBAtlasCloudBackupScheduleImportState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
conn := meta.(*MongoDBClient).Atlas

parts := strings.SplitN(d.Id(), "-", 2)
Expand All @@ -339,7 +339,7 @@ func resourceMongoDBAtlasCloudBackupScheduleImportState(d *schema.ResourceData,
projectID := parts[0]
clusterName := parts[1]

_, _, err := conn.CloudProviderSnapshotBackupPolicies.Get(context.Background(), projectID, clusterName)
_, _, err := conn.CloudProviderSnapshotBackupPolicies.Get(ctx, projectID, clusterName)
if err != nil {
return nil, fmt.Errorf(errorSnapshotBackupScheduleRead, clusterName, err)
}
Expand All @@ -360,11 +360,11 @@ func resourceMongoDBAtlasCloudBackupScheduleImportState(d *schema.ResourceData,
return []*schema.ResourceData{d}, nil
}

func cloudBackupScheduleCreateOrUpdate(conn *matlas.Client, d *schema.ResourceData, projectID, clusterName string) error {
func cloudBackupScheduleCreateOrUpdate(ctx context.Context, conn *matlas.Client, d *schema.ResourceData, projectID, clusterName string) error {
req := &matlas.CloudProviderSnapshotBackupPolicy{}

// Delete policies items
resp, _, err := conn.CloudProviderSnapshotBackupPolicies.Delete(context.Background(), projectID, clusterName)
resp, _, err := conn.CloudProviderSnapshotBackupPolicies.Delete(ctx, projectID, clusterName)
if err != nil {
return fmt.Errorf("error deleting MongoDB Cloud Backup Schedule (%s): %s", clusterName, err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ func TestAccResourceMongoDBAtlasCloudBackupSchedule_basic(t *testing.T) {
)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
Steps: []resource.TestStep{
{
Config: testAccMongoDBAtlasCloudBackupScheduleConfigNoPolicies(projectID, clusterName, &matlas.CloudProviderSnapshotBackupPolicy{
Expand Down Expand Up @@ -87,9 +87,9 @@ func TestAccResourceMongoDBAtlasCloudBackupSchedule_onepolicy(t *testing.T) {
)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
Steps: []resource.TestStep{
{
Config: testAccMongoDBAtlasCloudBackupScheduleDefaultConfig(projectID, clusterName, &matlas.CloudProviderSnapshotBackupPolicy{
Expand Down Expand Up @@ -155,9 +155,9 @@ func TestAccResourceMongoDBAtlasCloudBackupScheduleImport_basic(t *testing.T) {
)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: testAccProviderFactories,
CheckDestroy: testAccCheckMongoDBAtlasCloudBackupScheduleDestroy,
Steps: []resource.TestStep{
{
Config: testAccMongoDBAtlasCloudBackupScheduleDefaultConfig(projectID, clusterName, &matlas.CloudProviderSnapshotBackupPolicy{
Expand Down