Skip to content

Commit

Permalink
Refactor/devtooling 395 (#1044)
Browse files Browse the repository at this point in the history
* refactor/DEVTOOLING-395 - adding architect_schedules package

* Addressed PR comments

* added caching in schedules
  • Loading branch information
sureshperiyappan committed May 24, 2024
1 parent 263568b commit acb60f7
Show file tree
Hide file tree
Showing 18 changed files with 729 additions and 437 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package architect_schedulegroups

import (
"fmt"
"terraform-provider-genesyscloud/genesyscloud"
architectSchedules "terraform-provider-genesyscloud/genesyscloud/architect_schedules"
"terraform-provider-genesyscloud/genesyscloud/provider"
"terraform-provider-genesyscloud/genesyscloud/util"
"testing"
Expand Down Expand Up @@ -35,7 +35,7 @@ func TestAccDataSourceArchitectScheduleGroups(t *testing.T) {
Steps: []resource.TestStep{
{
// Create
Config: genesyscloud.GenerateArchitectSchedulesResource( // Create Open schedule
Config: architectSchedules.GenerateArchitectSchedulesResource( // Create Open schedule
schedResource,
openSched,
util.NullValue,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package architect_schedulegroups
import (
"sync"
"terraform-provider-genesyscloud/genesyscloud"
architectSchedules "terraform-provider-genesyscloud/genesyscloud/architect_schedules"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -30,7 +31,7 @@ func (r *registerTestInstance) registerTestResources() {
defer r.resourceMapMutex.Unlock()

providerResources[resourceName] = ResourceArchitectSchedulegroups()
providerResources["genesyscloud_architect_schedules"] = genesyscloud.ResourceArchitectSchedules()
providerResources["genesyscloud_architect_schedules"] = architectSchedules.ResourceArchitectSchedules()
providerResources["genesyscloud_auth_division"] = genesyscloud.ResourceAuthDivision()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package architect_schedulegroups
import (
"context"
"fmt"
"github.com/mypurecloud/platform-client-sdk-go/v129/platformclientv2"
"log"

"github.com/mypurecloud/platform-client-sdk-go/v129/platformclientv2"
)

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"strings"
gcloud "terraform-provider-genesyscloud/genesyscloud"
architectSchedules "terraform-provider-genesyscloud/genesyscloud/architect_schedules"
"terraform-provider-genesyscloud/genesyscloud/provider"
"terraform-provider-genesyscloud/genesyscloud/util"
"testing"
Expand Down Expand Up @@ -49,15 +50,15 @@ func TestAccResourceArchitectScheduleGroups(t *testing.T) {
Steps: []resource.TestStep{
{
// Create
Config: gcloud.GenerateArchitectSchedulesResource( // Create Open schedule
Config: architectSchedules.GenerateArchitectSchedulesResource( // Create Open schedule
schedResource1,
openSched,
util.NullValue,
schedDesc,
start,
end,
rrule,
) + gcloud.GenerateArchitectSchedulesResource( // Create Closed schedule
) + architectSchedules.GenerateArchitectSchedulesResource( // Create Closed schedule
schedResource2,
closedSched,
util.NullValue,
Expand Down Expand Up @@ -85,23 +86,23 @@ func TestAccResourceArchitectScheduleGroups(t *testing.T) {
},
{
// Update to add Holiday Schedule
Config: gcloud.GenerateArchitectSchedulesResource( // Create Open schedule
Config: architectSchedules.GenerateArchitectSchedulesResource( // Create Open schedule
schedResource1,
openSched,
util.NullValue,
schedDesc,
start,
end,
rrule,
) + gcloud.GenerateArchitectSchedulesResource( // Create Closed schedule
) + architectSchedules.GenerateArchitectSchedulesResource( // Create Closed schedule
schedResource2,
closedSched,
util.NullValue,
schedDesc,
start,
end,
rrule,
) + gcloud.GenerateArchitectSchedulesResource( // Create Holiday schedule
) + architectSchedules.GenerateArchitectSchedulesResource( // Create Holiday schedule
schedResource3,
holidaySched,
util.NullValue,
Expand Down Expand Up @@ -131,15 +132,15 @@ func TestAccResourceArchitectScheduleGroups(t *testing.T) {
},
{
// Create with new division
Config: gcloud.GenerateAuthDivisionBasic(divResource, divName) + gcloud.GenerateArchitectSchedulesResource( // Create Open schedule
Config: gcloud.GenerateAuthDivisionBasic(divResource, divName) + architectSchedules.GenerateArchitectSchedulesResource( // Create Open schedule
schedResource4,
openSched2,
"genesyscloud_auth_division."+divResource+".id",
schedDesc,
start,
end,
rrule,
) + gcloud.GenerateArchitectSchedulesResource( // Create Closed schedule
) + architectSchedules.GenerateArchitectSchedulesResource( // Create Closed schedule
schedResource5,
closedSched2,
"genesyscloud_auth_division."+divResource+".id",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package architect_schedules

import (
"context"
"fmt"
"terraform-provider-genesyscloud/genesyscloud/provider"
"terraform-provider-genesyscloud/genesyscloud/util"
"time"

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

func dataSourceArchitectSchedulesRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
sdkConfig := m.(*provider.ProviderMeta).ClientConfig
proxy := newArchitectSchedulesProxy(sdkConfig)

name := d.Get("name").(string)

return util.WithRetries(ctx, 15*time.Second, func() *retry.RetryError {
scheduleId, retryable, proxyResponse, err := proxy.getArchitectSchedulesIdByName(ctx, name)

if err != nil && !retryable {
return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Error searching architect schedules %s | error: %s", name, err), proxyResponse))
}

if retryable {
return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("No architect schedules found with name %s", name), proxyResponse))
}

d.SetId(scheduleId)
return nil
})
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package genesyscloud
package architect_schedules

import (
"fmt"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package architect_schedules

import (
"sync"
gcloud "terraform-provider-genesyscloud/genesyscloud"
"testing"

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

/*
The genesyscloud_architect_schedules_init_test.go file is used to initialize the data sources and resources
used in testing the architect_schedules resource.
*/

// providerDataSources holds a map of all registered datasources
var providerDataSources map[string]*schema.Resource

// providerResources holds a map of all registered resources
var providerResources map[string]*schema.Resource

type registerTestInstance struct {
resourceMapMutex sync.RWMutex
datasourceMapMutex sync.RWMutex
}

// registerTestResources registers all resources used in the tests
func (r *registerTestInstance) registerTestResources() {
r.resourceMapMutex.Lock()
defer r.resourceMapMutex.Unlock()

providerResources[resourceName] = ResourceArchitectSchedules()
providerResources["genesyscloud_auth_division"] = gcloud.ResourceAuthDivision()
}

// registerTestDataSources registers all data sources used in the tests.
func (r *registerTestInstance) registerTestDataSources() {
r.datasourceMapMutex.Lock()
defer r.datasourceMapMutex.Unlock()

providerDataSources[resourceName] = DataSourceArchitectScheduls()
}

// initTestResources initializes all test resources and data sources.
func initTestResources() {
providerDataSources = make(map[string]*schema.Resource)
providerResources = make(map[string]*schema.Resource)

regInstance := &registerTestInstance{}

regInstance.registerTestResources()
regInstance.registerTestDataSources()
}

// TestMain is a "setup" function called by the testing framework when run the test
func TestMain(m *testing.M) {
// Run setup function before starting the test suite for the architect_schedulegroups package
initTestResources()

// Run the test suite for the architect_schedulegroups package
m.Run()
}
Loading

0 comments on commit acb60f7

Please sign in to comment.