From da751e2db8b33dde76080fe2d7aac9fea75dcfcd Mon Sep 17 00:00:00 2001 From: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Date: Tue, 25 Jun 2024 09:36:08 +0100 Subject: [PATCH] Merge Dev to Main for Release v1.41.0 (#1118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 (#1008) * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * ran go generate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * DEVTOOLING-352 - provider oauth credential rate limit exceeded (#1004) * Testing something * Adding retry * Fixed retry * Moved functionality to retries package * Fixed inport cycle * Extending sleep * Added retry to AuthorizeSdk * Using with retries * Remving old function * Feat/devtooling 461 - WithRetries errors include improved logging (#1012) * calling diag func * Changed retryable functions to call Diagnostic function * Converted all withRetries errors to have improved wrapper * Made requested Changes * fixing unit test * Bump golang.org/x/net from 0.23.0 to 0.25.0 (#1017) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.25.0. - [Commits](https://github.com/golang/net/compare/v0.23.0...v0.25.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue 993 : Changed message_column to optional and add verification logic (#1013) * Changed message_column to optional and add verification logic * applied safer nil value handling * go generate (#1018) * bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1015) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Revert "bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1…" (#1019) This reverts commit 3ff66d472071905b18b4f66f6ee4b3d3725600e7. * bug/devtooling 560 - CX as Code crash when creating phones (#1020) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Made requested Change * feat/devtooling 579 - Improved Logging for Non-API errors (#1021) * Adding improved non-api diag errors * Pulling Merged PR * Added improved error * Added more logging * Ran go vet * Updated docs * Bump hashicorp/setup-terraform from 3.1.0 to 3.1.1 (#1024) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * bug/devtooling 362 - Evaluation forms incorrectly assigning published attribute (#1022) * Correctly sets published feature * Added functionality to set published field correctly * Fixed docs * Bug/devtooling 444: Custom resolver function for outbound campaign script_id (#1014) * Resolving campaign script_id to default outbound script data source when appropriate * Created constants package * editing scripts proxy so that the datasource catches Default scripts * Finished writing tests for new campaign field custom resolver * Fixed linting errors in campaigns package * implemented caching for campaigns exporter * minor changes to a comment * Add deleteCacheItem func + some refactoring work * Refactoring call to resolveToDataSource function and added unit test * Fixing script data source test * Bump github.com/nyaruka/phonenumbers from 1.3.4 to 1.3.5 (#1026) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Devtooling-162: Refactored idp salesforce (#999) * Refactored idp salesforce * Fixing docs * Changed function name * Removed original file * Changed Build Function Call to fix type difference (#1029) * fixing test for published attribute (#1030) * No jira: fixing up a few acceptance tests (#1031) * fixed journey segment update * Adding check to journey segment tests to validate is feature is supported * preventing panic in export helper function * Adding sleep to milestone data source test * Cleaning up fmt.Print statements appearing in export tests * undoing changes to segment resource file * Fix routing queue (#1028) * README update (#1025) * Pre-verify if the tfState is in sync with the exporter (#1027) * Add state comapartors * Upddate review comments * Devtooling-591: Consistency Checker Refactor (#1032) * Moved where consistency checker is created in resources * Cleaned up consitency checker file * Added resource name to message * Conditionally adding name * Made requested changes * Feature/devtooling 589 1 (#1035) * update doc * fix reviews * Fix acceptance tests - TCA and Prod (#1033) * Fix edge,export,script test,Jenkin to run tca&prod * Fix export & integration tests * Fix auth tests Fix auth tests * fix tests * resolve conflicts * move assignregion func, remove commented function modify to return empty string - assignregion func return default region --------- Co-authored-by: Monisha Padmavathi Ragavan * Bug/devtooling 597 - Routing email route test failing (#1039) * Added call to cleanup function * linter * adding hotfix to pr labeler config file (#1042) * bug/DEVTOOLING-436 - Added cleanup function for webdeployments resources (#1038) * Added cleanup function for webdeployments resources * fixing conflict * Made requested changes * Made requested changes * Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.33.0 to 2.34.0 (#1047) Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.33.0 to 2.34.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.33.0...v2.34.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bug/devtooling 287 temp disable cchecker (#1037) * removed consistency checker * changed DID number * phoneUpdated * Merging dev to main for v1.38.0 (#1036) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 (#1008) * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * ran go generate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * DEVTOOLING-352 - provider oauth credential rate limit exceeded (#1004) * Testing something * Adding retry * Fixed retry * Moved functionality to retries package * Fixed inport cycle * Extending sleep * Added retry to AuthorizeSdk * Using with retries * Remving old function * Feat/devtooling 461 - WithRetries errors include improved logging (#1012) * calling diag func * Changed retryable functions to call Diagnostic function * Converted all withRetries errors to have improved wrapper * Made requested Changes * fixing unit test * Bump golang.org/x/net from 0.23.0 to 0.25.0 (#1017) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.25.0. - [Commits](https://github.com/golang/net/compare/v0.23.0...v0.25.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue 993 : Changed message_column to optional and add verification logic (#1013) * Changed message_column to optional and add verification logic * applied safer nil value handling * go generate (#1018) * bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1015) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Revert "bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1…" (#1019) This reverts commit 3ff66d472071905b18b4f66f6ee4b3d3725600e7. * bug/devtooling 560 - CX as Code crash when creating phones (#1020) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Made requested Change * feat/devtooling 579 - Improved Logging for Non-API errors (#1021) * Adding improved non-api diag errors * Pulling Merged PR * Added improved error * Added more logging * Ran go vet * Updated docs * Bump hashicorp/setup-terraform from 3.1.0 to 3.1.1 (#1024) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * bug/devtooling 362 - Evaluation forms incorrectly assigning published attribute (#1022) * Correctly sets published feature * Added functionality to set published field correctly * Fixed docs * Bug/devtooling 444: Custom resolver function for outbound campaign script_id (#1014) * Resolving campaign script_id to default outbound script data source when appropriate * Created constants package * editing scripts proxy so that the datasource catches Default scripts * Finished writing tests for new campaign field custom resolver * Fixed linting errors in campaigns package * implemented caching for campaigns exporter * minor changes to a comment * Add deleteCacheItem func + some refactoring work * Refactoring call to resolveToDataSource function and added unit test * Fixing script data source test * Bump github.com/nyaruka/phonenumbers from 1.3.4 to 1.3.5 (#1026) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Devtooling-162: Refactored idp salesforce (#999) * Refactored idp salesforce * Fixing docs * Changed function name * Removed original file * Changed Build Function Call to fix type difference (#1029) * fixing test for published attribute (#1030) * No jira: fixing up a few acceptance tests (#1031) * fixed journey segment update * Adding check to journey segment tests to validate is feature is supported * preventing panic in export helper function * Adding sleep to milestone data source test * Cleaning up fmt.Print statements appearing in export tests * undoing changes to segment resource file * Fix routing queue (#1028) * README update (#1025) * Pre-verify if the tfState is in sync with the exporter (#1027) * Add state comapartors * Upddate review comments * Devtooling-591: Consistency Checker Refactor (#1032) * Moved where consistency checker is created in resources * Cleaned up consitency checker file * Added resource name to message * Conditionally adding name * Made requested changes * Feature/devtooling 589 1 (#1035) * update doc * fix reviews --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * NO-JIRA: Fixing nil pointer in consistency checker (#1041) * Fixed nil pointer in consistency checker * Fixed a few more nil pointers * Fixing nil pointer (#1045) * merged with dev --------- Signed-off-by: dependabot[bot] Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * Fixing up provider docs (#1046) * Fix Export Version problem (#1049) * Logging error in queue create/update instead of failing (#1050) * Refactor/devtooling 395 (#1044) * refactor/DEVTOOLING-395 - adding architect_schedules package * Addressed PR comments * added caching in schedules * Report Generation & testcase fix (#1051) * Report generation generate report generate report * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests * fix tests * fix tests fix tests fix tests * fix tests * fix report * fix report * fix tests fix tests * Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.33.0 to 2.34.0 (#1047) Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.33.0 to 2.34.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.33.0...v2.34.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bug/devtooling 287 temp disable cchecker (#1037) * removed consistency checker * changed DID number * phoneUpdated * Merging dev to main for v1.38.0 (#1036) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 (#1008) * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * ran go generate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * DEVTOOLING-352 - provider oauth credential rate limit exceeded (#1004) * Testing something * Adding retry * Fixed retry * Moved functionality to retries package * Fixed inport cycle * Extending sleep * Added retry to AuthorizeSdk * Using with retries * Remving old function * Feat/devtooling 461 - WithRetries errors include improved logging (#1012) * calling diag func * Changed retryable functions to call Diagnostic function * Converted all withRetries errors to have improved wrapper * Made requested Changes * fixing unit test * Bump golang.org/x/net from 0.23.0 to 0.25.0 (#1017) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.25.0. - [Commits](https://github.com/golang/net/compare/v0.23.0...v0.25.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue 993 : Changed message_column to optional and add verification logic (#1013) * Changed message_column to optional and add verification logic * applied safer nil value handling * go generate (#1018) * bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1015) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Revert "bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1…" (#1019) This reverts commit 3ff66d472071905b18b4f66f6ee4b3d3725600e7. * bug/devtooling 560 - CX as Code crash when creating phones (#1020) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Made requested Change * feat/devtooling 579 - Improved Logging for Non-API errors (#1021) * Adding improved non-api diag errors * Pulling Merged PR * Added improved error * Added more logging * Ran go vet * Updated docs * Bump hashicorp/setup-terraform from 3.1.0 to 3.1.1 (#1024) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * bug/devtooling 362 - Evaluation forms incorrectly assigning published attribute (#1022) * Correctly sets published feature * Added functionality to set published field correctly * Fixed docs * Bug/devtooling 444: Custom resolver function for outbound campaign script_id (#1014) * Resolving campaign script_id to default outbound script data source when appropriate * Created constants package * editing scripts proxy so that the datasource catches Default scripts * Finished writing tests for new campaign field custom resolver * Fixed linting errors in campaigns package * implemented caching for campaigns exporter * minor changes to a comment * Add deleteCacheItem func + some refactoring work * Refactoring call to resolveToDataSource function and added unit test * Fixing script data source test * Bump github.com/nyaruka/phonenumbers from 1.3.4 to 1.3.5 (#1026) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Devtooling-162: Refactored idp salesforce (#999) * Refactored idp salesforce * Fixing docs * Changed function name * Removed original file * Changed Build Function Call to fix type difference (#1029) * fixing test for published attribute (#1030) * No jira: fixing up a few acceptance tests (#1031) * fixed journey segment update * Adding check to journey segment tests to validate is feature is supported * preventing panic in export helper function * Adding sleep to milestone data source test * Cleaning up fmt.Print statements appearing in export tests * undoing changes to segment resource file * Fix routing queue (#1028) * README update (#1025) * Pre-verify if the tfState is in sync with the exporter (#1027) * Add state comapartors * Upddate review comments * Devtooling-591: Consistency Checker Refactor (#1032) * Moved where consistency checker is created in resources * Cleaned up consitency checker file * Added resource name to message * Conditionally adding name * Made requested changes * Feature/devtooling 589 1 (#1035) * update doc * fix reviews --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * NO-JIRA: Fixing nil pointer in consistency checker (#1041) * Fixed nil pointer in consistency checker * Fixed a few more nil pointers * Fixing nil pointer (#1045) * merged with dev --------- Signed-off-by: dependabot[bot] Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * Fixing up provider docs (#1046) * fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests --------- Signed-off-by: dependabot[bot] Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * Add extra check for dependency resolution (#1052) * Devtooling 604: Infinite loop retrieving knowledge documents (#1053) * DEVTOOLING-282 * Adding log message indicating we're hitting the specific scenario for which the integration no longer exist * working around cycling dependencies per charliecon recommendation * adding implementation function getIntegrationByIdFn * Export integration credential only if it matches the expected format - DEVTOOLING-310 * infite loop bugfix --------- Co-authored-by: Will <37446330+williamjeuniaux@users.noreply.github.com> * Feat/COBROWSE-2404 add cobrowse config field (#1054) * made changes similar to what Mateusz did for other fields * updated version * mod and sum fix --------- Co-authored-by: ivan * No jira: Fixing dev with go generate & go mod tidy (#1057) * Fixed go.mod + removed refs to old sdk version * Small refactoring + go generate * DEVTOOLING-592: Changed team members logic (#1055) * Changed team members logic * moved function * Updated docs * Updated docs * Updated docs * Updated docs * Rand go generate * Bump github.com/nyaruka/phonenumbers from 1.3.5 to 1.3.6 (#1056) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.5 to 1.3.6. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.5...v1.3.6) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Feat/devtooling-477: Site Outbound Routes Resource (#1048) * Moving outbound routes to own package * Continued with outbound routes * Finished outboudn routes resource * Ran linter and added exporter * Added api to doc * Added caching * Fixed small bug * Made requested changes * Fixed go version * No jira: fix dev (#1059) * removed ref to old sdk * logging outbound route export error instead of failing * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.2 to 0.19.3 (#1062) Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.2 to 0.19.3. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.2...v0.19.3) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Cache for Data Sources (#1064) * Cache for Data Sources * fix context issue during actual run * DEVTOOLING-603: Media recording poilicies missing from export (#1063) * Caling api manually instead of using sdk * Small change to data source * Bump golang.org/x/net from 0.25.0 to 0.26.0 (#1072) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.25.0 to 0.26.0. - [Commits](https://github.com/golang/net/compare/v0.25.0...v0.26.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.3 to 0.19.4 (#1073) Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.3 to 0.19.4. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.3...v0.19.4) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Feat/devtooling 610 (#1065) * added data source for routing email route * added data source files * changes for name to pattern * updated docs * conflicts resolved * comments resolved for feat/DEVTOOLING-610 * Fixing Tests By removing unsupported arguments (#1070) * Fixing test (#1074) * Refactor/devtooling 156 (#1060) * idp_adfs refactoring * made changes for the getalladfs func * error handling changes * changes done according to unrefractor resource * changes return type * did changes for test idp_adfs * bug fixes * resolved comments * resolved comments * resolved comments * Bug/devtooling 584 (#1071) * Cache for Data Sources * fix context issue during actual run * pushing changes * removed debugging logger * addressed PR changes * updated note * resolved merge conflicts --------- Co-authored-by: HemanthDogiparthi12 Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * fix api call strategy (#1075) * [JM-1457]: Add resource for journey views (#1067) * Merging dev to main for v1.39.0 (#1061) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 (#1008) * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * ran go generate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * DEVTOOLING-352 - provider oauth credential rate limit exceeded (#1004) * Testing something * Adding retry * Fixed retry * Moved functionality to retries package * Fixed inport cycle * Extending sleep * Added retry to AuthorizeSdk * Using with retries * Remving old function * Feat/devtooling 461 - WithRetries errors include improved logging (#1012) * calling diag func * Changed retryable functions to call Diagnostic function * Converted all withRetries errors to have improved wrapper * Made requested Changes * fixing unit test * Bump golang.org/x/net from 0.23.0 to 0.25.0 (#1017) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.25.0. - [Commits](https://github.com/golang/net/compare/v0.23.0...v0.25.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue 993 : Changed message_column to optional and add verification logic (#1013) * Changed message_column to optional and add verification logic * applied safer nil value handling * go generate (#1018) * bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1015) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Revert "bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1…" (#1019) This reverts commit 3ff66d472071905b18b4f66f6ee4b3d3725600e7. * bug/devtooling 560 - CX as Code crash when creating phones (#1020) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Made requested Change * feat/devtooling 579 - Improved Logging for Non-API errors (#1021) * Adding improved non-api diag errors * Pulling Merged PR * Added improved error * Added more logging * Ran go vet * Updated docs * Bump hashicorp/setup-terraform from 3.1.0 to 3.1.1 (#1024) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * bug/devtooling 362 - Evaluation forms incorrectly assigning published attribute (#1022) * Correctly sets published feature * Added functionality to set published field correctly * Fixed docs * Bug/devtooling 444: Custom resolver function for outbound campaign script_id (#1014) * Resolving campaign script_id to default outbound script data source when appropriate * Created constants package * editing scripts proxy so that the datasource catches Default scripts * Finished writing tests for new campaign field custom resolver * Fixed linting errors in campaigns package * implemented caching for campaigns exporter * minor changes to a comment * Add deleteCacheItem func + some refactoring work * Refactoring call to resolveToDataSource function and added unit test * Fixing script data source test * Bump github.com/nyaruka/phonenumbers from 1.3.4 to 1.3.5 (#1026) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Devtooling-162: Refactored idp salesforce (#999) * Refactored idp salesforce * Fixing docs * Changed function name * Removed original file * Changed Build Function Call to fix type difference (#1029) * fixing test for published attribute (#1030) * No jira: fixing up a few acceptance tests (#1031) * fixed journey segment update * Adding check to journey segment tests to validate is feature is supported * preventing panic in export helper function * Adding sleep to milestone data source test * Cleaning up fmt.Print statements appearing in export tests * undoing changes to segment resource file * Fix routing queue (#1028) * README update (#1025) * Pre-verify if the tfState is in sync with the exporter (#1027) * Add state comapartors * Upddate review comments * Devtooling-591: Consistency Checker Refactor (#1032) * Moved where consistency checker is created in resources * Cleaned up consitency checker file * Added resource name to message * Conditionally adding name * Made requested changes * Feature/devtooling 589 1 (#1035) * update doc * fix reviews * Fix acceptance tests - TCA and Prod (#1033) * Fix edge,export,script test,Jenkin to run tca&prod * Fix export & integration tests * Fix auth tests Fix auth tests * fix tests * resolve conflicts * move assignregion func, remove commented function modify to return empty string - assignregion func return default region --------- Co-authored-by: Monisha Padmavathi Ragavan * Bug/devtooling 597 - Routing email route test failing (#1039) * Added call to cleanup function * linter * adding hotfix to pr labeler config file (#1042) * bug/DEVTOOLING-436 - Added cleanup function for webdeployments resources (#1038) * Added cleanup function for webdeployments resources * fixing conflict * Made requested changes * Made requested changes * Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.33.0 to 2.34.0 (#1047) Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.33.0 to 2.34.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.33.0...v2.34.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bug/devtooling 287 temp disable cchecker (#1037) * removed consistency checker * changed DID number * phoneUpdated * Merging dev to main for v1.38.0 (#1036) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to rou… * Fixes #1078 (#1079) * Coverage Report and fixing tests (#1080) * Report generation generate report generate report * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests * fix tests * fix tests fix tests fix tests * fix tests * fix report * fix report * fix tests fix tests * Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.33.0 to 2.34.0 (#1047) Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.33.0 to 2.34.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.33.0...v2.34.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bug/devtooling 287 temp disable cchecker (#1037) * removed consistency checker * changed DID number * phoneUpdated * Merging dev to main for v1.38.0 (#1036) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports * Feat/add flow log level resource (#948) * add code changes * add flow log level changes * testing commit * getting there, have a create test together * still trying to get a passing test * tests have passed! but getting the plan was not empty errors now * flow log level test * finally got tests passing * remove debug logging * rerun go generate * rerun go generate * apply suggestions from PR review * address PR review * remove characteristics * address PR comments * return total flow log levels when no more are found --------- Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> * NO-JIRA: Small Change to flow log level (#984) * Small Change to flow log level * Fixing typo * Merge hotfix changes on main into dev (#983) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 (#992) * Bump github.com/hashicorp/terraform-plugin-docs from 0.18.0 to 0.19.1 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.18.0 to 0.19.1. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.18.0...v0.19.1) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * rerunning go generate after tf-docs package upgrade --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * Devtooling 432: Conditonal Group Routing (#970) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Added CGR and toggle * Fixed some errors * Added queue proxy to CGR * Added toggle to get all * Made some changes * Added CGR toggle package * Moved CGR toggle package * Ran linter * Checking queue id in tests * Small change * bug/Devtooling-458: media retention policy creation failing with error on time interval (#980) * added checks * Checks for time interval attributes * Fixing TimeInterval * Added BuildFunc for timeInterval * Added returned errors for invalid time Interval * Fixed buildFunctions * Generate Docs * Fixed exporter * Getting rid of go vet warning about copying a lock value to a variable (#991) * No jira: util function for getting cursor value from next uri (#990) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) * Made function for parsing cursor from next uri --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix acceptance tests (#979) * fix acceptance test fix test fix test fix test fix test fix tests fix tests fix tests fix tests fix tests fix test fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix routing test fix tests fix tests restore files fix team test * fix comments * fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * fix tests fix tests fix tests * fix tests * fix conditional routing test fix conditional routing test --------- Co-authored-by: Monisha Padmavathi Ragavan * Bump hashicorp/setup-terraform from 3.0.0 to 3.1.0 (#995) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.0.0...v3.1.0) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improvise exclude attributes to Regex (#988) * Fix Media call back Read Attributes (#987) * DEVTOOLING-445: User Roles not returning duplicate roles (#989) * NO-JIRA-Upgrading-Go-SDK * Fixed errors * Fixed conditional group routing * Fixed some tests * feat/Devtooling 496: Routing queue Outbound email address independent resource (#954) * Added routing_queue_conditional_group_routing resource * Rebased * Removed accidental commits * Rebased and fixed errors * Added evaluated_queue_id * Fixed some things * Added CGR and toggle * Made some changes * Added CGR toggle package * Moved CGR toggle package * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Routing queue outbound email address package * Made changes * Added tests * Added more to test * Fixed test * Finished resource * Finished resource * Made some requested changes * Added feature toggle stuff * Added feature toggle * Made changes * Fixing change in queue exporter --------- Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> * bug/devtooling-498: [CX as Code] genesyscloud_outbound_settings export contains only null data (#996) * Fixing null export * Fixing Test * Added check for export * Added attribute and fixed test * Removed Computed attribute * Added check for reschedule_time_zone_skipped_contacts in test * Update Export Guide (#971) * update export uide * update tf_export.md and resource.tf * cross check resource.tf and schema, add missing attributes * update * update export.md.tmp * Removed duplicate paragraph and ran go generate --------- Co-authored-by: Charlie Conneely * NO-JIRA: Fixing dev (#1000) * Fixing dev * Fixes some errors * Fixing flow outcome description (#998) * Devtooling 561 - Members not being added correctly to teams (#1001) * Fixed bug * Fixed problem deleting members * Removed print * Fix Version Problem in WebDeployments (#997) * Fix Version Problem in WebDeployments * Add test cases * Fix review comments * no jira: Fixing merge conflicts on dev branch (#1009) * moving changes (#960) * Revert "moving changes (#960)" (#963) This reverts commit 70d8a8036c52ae2f91aee081fe0d1c4c5451a58f. * Release Merge to Main (#977) * Bump golang.org/x/net from 0.22.0 to 0.23.0 (#951) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.23.0. - [Commits](https://github.com/golang/net/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add team to custom resolver (#950) * Devtooling 432: Refactor Conditional Group Routing Rules into its own resource (#921) * Added routing_queue_conditional_group_routing resource * Rebased * Fixed routing queue tests * Removed accidental commits * Rebased and fixed errors * Made some requested changes * Added evaluated_queue_id * Added warning * Fixed some things * Fixed test * Fixing exporter * Fixed type * Changing target branch of dependabot PRs to dev (#956) * Fix User Resource Panics (#949) * moving changes (#964) * Reverting conditional group routing resoure (#965) * Remove use_supported_content_profile (#962) * bug/ DEVTOOLING-516: Allow Multiple inputs for BYMONTHDAY and BYMONTH (#953) * Allow Multiple inputs for BYMONTHDAY and BYMONTH * Update go.mod * Added Error Message to Validator * Bug/devtooling-530: Fixing panic during export caused by MemberGroupsResolver (#957) * Changing groups.owner_ids to optional and computed * Preventing panic inside MemberGroupsResolver with some refactoring * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag… (#946) * DEVTOOLING-417: Removed the go:generate git restore docs/index.md tag. This is pulling the index.md out of git hub and overriding what ever is being generated. * DEVTOOLING-417: Fixed a mispelling in a package alias * DEVTOOLING-417 Accidently added cache code * avoiding infinite loop in flow data source read (#966) * feat/Devtooling-448 oauth cred cache (#945) * DEVTOOLING-448: Initial commit of code * DEVTOOLING-448: Added caching while creating a Genesys Cloud OAuth Client specific so we dont have to force the user embed a secret * DEVTOOLING-448: Refactored retrieveCachedOauthClientSecret code * DEVTOOLING-448: Committing interm work * DEVTOOLING-448: Reworked how we handle the addition of roles for user credentials * DEVTOOLING-448: Removed the ToPtrStr function * Fixing go.mod and running go generate (#967) * feat/Devtooling-459: Added BuildAPIDiagnosticError function calls (#959) * added buildDiag function p1 * Adding call to BuildApiDiag * BuildAPIDiag functions added * Added util.BuildAPIDiag function to refactored resources * Added call to BuildAPIDiag in resources * Update go.mod * Fixed tests * Update go.mod * Added err * Added err * Update go.mod * Requested Changes * Fix for BotFlows dependencies (#961) * feat/Devtooling-531: Add proxy and cache to routing queue (#958) * Added cache to routing queue * Added proxy and caching to routing queue * Removed log * Add consistency checker back * Fix group cache * Fix Export cyclic deps (#968) * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Feat/devtooling-177: Refactored orgAuthorization_pairing (#975) * refactored orgauthorization_pairing * Added exporter for response management response asset * Added refactor label to pr-labeler-config * Feat/devtooling-499: Added getAll Functionality to ResponseManagement_ResponseAsset (#969) * adding getALl functionality * adding exporter * adding export * Added getAll functionality * Update go.mod * Added Caching * Added file_content_hash * Fixed test * using resource mutexes in init_test files & linting errors (#973) * Feature/devtooling 63 (#974) * Introduce new Elements * Update Attribs * Introduce scoring Method * Upgrade ssdk * remove unwanted logs * Feature/devtooling 63 (#978) * Fix exports --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Fix Exporter for non-flow resources (#982) * Fix Exporter for non-flow resources * Added check (#981) --------- Signed-off-by: dependabot[bot] Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 (#1008) * Bump github.com/hashicorp/terraform-plugin-docs from 0.19.1 to 0.19.2 Bumps [github.com/hashicorp/terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/hashicorp/terraform-plugin-docs/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-docs/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-docs/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-docs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * ran go generate --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Charlie Conneely * DEVTOOLING-352 - provider oauth credential rate limit exceeded (#1004) * Testing something * Adding retry * Fixed retry * Moved functionality to retries package * Fixed inport cycle * Extending sleep * Added retry to AuthorizeSdk * Using with retries * Remving old function * Feat/devtooling 461 - WithRetries errors include improved logging (#1012) * calling diag func * Changed retryable functions to call Diagnostic function * Converted all withRetries errors to have improved wrapper * Made requested Changes * fixing unit test * Bump golang.org/x/net from 0.23.0 to 0.25.0 (#1017) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.23.0 to 0.25.0. - [Commits](https://github.com/golang/net/compare/v0.23.0...v0.25.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix for issue 993 : Changed message_column to optional and add verification logic (#1013) * Changed message_column to optional and add verification logic * applied safer nil value handling * go generate (#1018) * bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1015) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Revert "bug/devtooling 560 - Nil error in telephony_providers_edges_phone (#1…" (#1019) This reverts commit 3ff66d472071905b18b4f66f6ee4b3d3725600e7. * bug/devtooling 560 - CX as Code crash when creating phones (#1020) * Removed Print Statement that throws Nil error and added random id to test to prevent failing * golint changes made * Made requested Change * feat/devtooling 579 - Improved Logging for Non-API errors (#1021) * Adding improved non-api diag errors * Pulling Merged PR * Added improved error * Added more logging * Ran go vet * Updated docs * Bump hashicorp/setup-terraform from 3.1.0 to 3.1.1 (#1024) Bumps [hashicorp/setup-terraform](https://github.com/hashicorp/setup-terraform) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/hashicorp/setup-terraform/releases) - [Changelog](https://github.com/hashicorp/setup-terraform/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/setup-terraform/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: hashicorp/setup-terraform dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * bug/devtooling 362 - Evaluation forms incorrectly assigning published attribute (#1022) * Correctly sets published feature * Added functionality to set published field correctly * Fixed docs * Bug/devtooling 444: Custom resolver function for outbound campaign script_id (#1014) * Resolving campaign script_id to default outbound script data source when appropriate * Created constants package * editing scripts proxy so that the datasource catches Default scripts * Finished writing tests for new campaign field custom resolver * Fixed linting errors in campaigns package * implemented caching for campaigns exporter * minor changes to a comment * Add deleteCacheItem func + some refactoring work * Refactoring call to resolveToDataSource function and added unit test * Fixing script data source test * Bump github.com/nyaruka/phonenumbers from 1.3.4 to 1.3.5 (#1026) Bumps [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) from 1.3.4 to 1.3.5. - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](https://github.com/nyaruka/phonenumbers/compare/v1.3.4...v1.3.5) --- updated-dependencies: - dependency-name: github.com/nyaruka/phonenumbers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Devtooling-162: Refactored idp salesforce (#999) * Refactored idp salesforce * Fixing docs * Changed function name * Removed original file * Changed Build Function Call to fix type difference (#1029) * fixing test for published attribute (#1030) * No jira: fixing up a few acceptance tests (#1031) * fixed journey segment update * Adding check to journey segment tests to validate is feature is supported * preventing panic in export helper function * Adding sleep to milestone data source test * Cleaning up fmt.Print statements appearing in export tests * undoing changes to segment resource file * Fix routing queue (#1028) * README update (#1025) * Pre-verify if the tfState is in sync with the exporter (#1027) * Add state comapartors * Upddate review comments * Devtooling-591: Consistency Checker Refactor (#1032) * Moved where consistency checker is created in resources * Cleaned up consitency checker file * Added resource name to message * Conditionally adding name * Made requested changes * Feature/devtooling 589 1 (#1035) * update doc * fix reviews --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * NO-JIRA: Fixing nil pointer in consistency checker (#1041) * Fixed nil pointer in consistency checker * Fixed a few more nil pointers * Fixing nil pointer (#1045) * merged with dev --------- Signed-off-by: dependabot[bot] Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * Fixing up provider docs (#1046) * fix tests fix tests fix tests * fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests fix tests * Package wise coverage report * Package wise coverage report * fix tests * fix tests * fix tests * fix tests * fix tests * fix tests * Modify coverage report to list all data * Display coverage report, data in same page * fix newly added tests * fix newly added tests * fix user tests * fix failing tests * Cache for Data Sources (#1064) * Cache for Data Sources * fix context issue during actual run * fix tests Fix failing tests fix tests * Add didpool for phoneresource * fix tests * fix tests * modify logging modify logging modify logging modify logging --------- Signed-off-by: dependabot[bot] Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Brian Moyles <157126600+BrianMoyles@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: BrianMoyles Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> * fixing go vet warnings/errors (#1081) * refactored idp_okta resource (#1069) * refactored idp_okta resource * updated the docs * comments resolved * comments resolved * ran go generate * updated docs and bug fix * fix update issues for workType (#1076) * fix update issues for workType * Delete genesyscloud/task_management_worktype/WorkType.go * Fix caching issue (#1082) * Fix caching issue * fix docs * Feature/fix unit tests (#1090) * Update worktype * fix test case * fix exporter crash (#1101) * fix exporter crash problem * review comment * added caching capabilities (#1088) * Update Description (#1104) * [JM-1466]: Upgrade the platform client version (#1100) * [JM-1457]: Add resource for journey views * [JM-1457]: import journey view as variable in main.go * [JM-1457]: Remove print statements * [JM-1457]: Refactor code * Remove default values from optional fields * [JM-1457]: Refactor and generate the doc * Remove default value from eventCountType * [JM-1457]: Filter should be nil if not given * Merge with dev * [JM-1457]: Filter should be nil if not given * [JM-1466]: Upgrade platform client version --------- Co-authored-by: Mohammed Islam * Devtooling 501: Removing support for v1 and v1-http widget deployments (#1097) * Updated widget_deployment schema to reflect API changes * updated example widget deployment resource * Removed old client_config field from schema and fixed data source test * Returned client_config field and marked it as deprecated * refactor/Tidy up journey_segment resource tests/doc (#1103) * Fix issues identified in DEVTOOLING-662 as a result of testing DEVTOOLING-477 (#1109) * Updating docs (#1110) * feat/devtooling 71: Outbound contact list contact resource (#1084) * Creating contact_list_contact resource * Defined contact list contact resource schema * Defined more boiler plate code for contact package + started working on create func * implemented read function for contact resource * finished crud operations and started testing * Refactored calls to GenerateMap test util function * Necessary refactoring to get contact test passing * extending contact_list_contact tests * Removed id field from schema + added example data * go generate * Adding contact_list_contact exporter * Updated gc sdk version and finished contact exporter * finishing contact exporter * DEVTOOLING-643 : Adds support for using sanitized names in export. (#1106) * Adds support for using sanitized names in export. This allows you to copy the names from the results of an export and reuse them as include/exclude filters in a new export * Fix Typo * Fix quotes * Bug/devtooling 659 (#1108) * added nil check * added nil check for line properties * Bump github.com/hashicorp/hcl/v2 from 2.20.1 to 2.21.0 (#1113) Bumps [github.com/hashicorp/hcl/v2](https://github.com/hashicorp/hcl) from 2.20.1 to 2.21.0. - [Release notes](https://github.com/hashicorp/hcl/releases) - [Changelog](https://github.com/hashicorp/hcl/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcl/compare/v2.20.1...v2.21.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcl/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Feat/devtooling 187 - Refactor routing settings (#1089) * Refactored Routing Settings * Added missing attributes to schema * Removed data source * Made requested Changes * Fixing merge conflicts * DEVTOOLING-601: Queue member assignment taking long time (#1107) * Sped up member assignment * Used diag error wrapper * Fixes #1086 + some minor refactoring (#1111) * Feat/devtooling 618 (#1083) * code for compression * added compression logic in generateoutput func * added fields compress and passphrase * removed passphrase flag * updated docs * moved the compression logic to a function * added test case for compress flag * comments resolved * updated docs * resolved comments * commenting RefAttr in trunkbasesettings exporter to fix unit test (#1115) * Merge unit tests & fix failing testcases (#1116) * run unit tests * run unit tests * add unit test * Fix failing tests * fix failed tests * Fix failing tests * Fix webdeployment testcases * Fix webdeployment testcases * Run remaining unit tests * Revert export changes * Fix export tests * Fix widget tests * Modify to delete list of didpool --------- Co-authored-by: Monisha Padmavathi Ragavan * onholdprompt attribute added along with test case (#1114) * refactor/Devtooling-190 [routing_utilization] + Devtooling-400 [routing_utilization_label] (#1105) * Refactored but waiting for cyclic dependency removal * refactor routing utilization label * Tidy up * Updated docs * fixing naming convention in tf_export * fixing user test * Requested changes * fixing merge conflicts * Refactored but waiting for cyclic dependency removal * refactor routing utilization label * Tidy up * Updated docs * fixing naming convention in tf_export * fixing user test * fixing merge * fixing docs * Made requested changes * changes * fixing tests --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HemanthDogiparthi12 <127493303+HemanthDogiparthi12@users.noreply.github.com> Co-authored-by: dginty4 <108797778+dginty4@users.noreply.github.com> Co-authored-by: Charlie Conneely <87772562+charliecon@users.noreply.github.com> Co-authored-by: kavinbalagen <150852268+kavinbalagen@users.noreply.github.com> Co-authored-by: carnellj-genesys <109529583+carnellj-genesys@users.noreply.github.com> Co-authored-by: ben-howarth-genesys <164904178+ben-howarth-genesys@users.noreply.github.com> Co-authored-by: Charlie Conneely Co-authored-by: monishapadmavathi <31921259+monishapadmavathi@users.noreply.github.com> Co-authored-by: Monisha Padmavathi Ragavan Co-authored-by: jenissabarrera <50225452+jenissabarrera@users.noreply.github.com> Co-authored-by: Taisuk Choi <131831426+TaisukChoi@users.noreply.github.com> Co-authored-by: sureshperiyappan <61573777+sureshperiyappan@users.noreply.github.com> Co-authored-by: willjeuniaux-genesys <153622483+willjeuniaux-genesys@users.noreply.github.com> Co-authored-by: Will <37446330+williamjeuniaux@users.noreply.github.com> Co-authored-by: Ivan Mikhalchenko Co-authored-by: ivan Co-authored-by: shrutisuryawanshigenesys Co-authored-by: HemanthDogiparthi12 Co-authored-by: Majharul Islam Rafat Co-authored-by: Mohammed Islam Co-authored-by: tsantos-genesys <154342374+tsantos-genesys@users.noreply.github.com> Co-authored-by: Brian Goad --- docs/data-sources/routing_settings.md | 44 -- docs/resources/journey_segment.md | 2 +- .../outbound_contact_list_contact.md | 115 ++++++ docs/resources/routing_queue.md | 1 + docs/resources/routing_settings.md | 2 + docs/resources/tf_export.md | 1 + docs/resources/widget_deployment.md | 16 +- .../apis.md | 4 + .../resource.tf | 37 ++ .../resource.tf | 5 +- ...source_genesyscloud_architect_datatable.go | 2 +- ...source_genesyscloud_architect_datatable.go | 2 +- ..._genesyscloud_architect_datatable_proxy.go | 2 +- ...e_genesyscloud_architect_datatable_test.go | 2 +- ...esyscloud_architect_datatable_row_utils.go | 2 +- ...ce_genesyscloud_architect_datatable_row.go | 2 +- ...esyscloud_architect_datatable_row_proxy.go | 2 +- ...nesyscloud_architect_datatable_row_test.go | 2 +- ...syscloud_architect_emergencygroup_proxy.go | 2 +- ...e_genesyscloud_architect_emergencygroup.go | 2 +- ...esyscloud_architect_emergencygroup_test.go | 2 +- ...syscloud_architect_emergencygroup_utils.go | 2 +- ...ource_genesyscloud_architect_flow_proxy.go | 2 +- .../resource_genesyscloud_flow.go | 2 +- .../resource_genesyscloud_flow_test.go | 2 +- .../genesyscloud_architect_grammar_proxy.go | 2 +- ...resource_genesyscloud_architect_grammar.go | 2 +- ...rce_genesyscloud_architect_grammar_test.go | 2 +- ...scloud_architect_grammar_language_proxy.go | 2 +- ...genesyscloud_architect_grammar_language.go | 2 +- ...yscloud_architect_grammar_language_test.go | 2 +- ...scloud_architect_grammar_language_utils.go | 2 +- ..._source_genesyscloud_architect_ivr_test.go | 2 +- .../genesyscloud_architect_ivr_proxy.go | 2 +- ...esyscloud_architect_ivr_proxy_unit_test.go | 2 +- .../resource_genesyscloud_architect_ivr.go | 2 +- ...ource_genesyscloud_architect_ivr_schema.go | 4 +- ...esource_genesyscloud_architect_ivr_test.go | 2 +- ...ce_genesyscloud_architect_ivr_unit_test.go | 2 +- ...source_genesyscloud_architect_ivr_utils.go | 2 +- ...syscloud_architect_schedulegroups_proxy.go | 2 +- ...e_genesyscloud_architect_schedulegroups.go | 2 +- ...esyscloud_architect_schedulegroups_test.go | 2 +- .../genesyscloud_architect_schedules_proxy.go | 2 +- ...source_genesyscloud_architect_schedules.go | 2 +- ...e_genesyscloud_architect_schedules_test.go | 2 +- ...enesyscloud_architect_user_prompt_proxy.go | 2 +- ...urce_genesyscloud_architect_user_prompt.go | 2 +- ...genesyscloud_architect_user_prompt_test.go | 2 +- ...enesyscloud_architect_user_prompt_utils.go | 2 +- .../data_source_genesyscloud_auth_role.go | 2 +- .../auth_role/genesyscloud_auth_role_proxy.go | 19 +- .../resource_genesyscloud_auth_role.go | 2 +- .../resource_genesyscloud_auth_role_test.go | 2 +- .../resource_genesyscloud_auth_role_utils.go | 2 +- ...genesyscloud_authorization_product_test.go | 2 +- ...enesyscloud_authorization_product_proxy.go | 2 +- ...source_genesyscloud_architect_schedules.go | 2 +- .../data_source_genesyscloud_auth_division.go | 2 +- ..._source_genesyscloud_auth_division_home.go | 2 +- ..._source_genesyscloud_journey_action_map.go | 2 +- ...ce_genesyscloud_journey_action_template.go | 2 +- ...ata_source_genesyscloud_journey_outcome.go | 2 +- ...ata_source_genesyscloud_journey_segment.go | 2 +- ..._source_genesyscloud_knowledge_category.go | 2 +- ...ce_genesyscloud_knowledge_knowledgebase.go | 2 +- ...ata_source_genesyscloud_knowledge_label.go | 2 +- .../data_source_genesyscloud_location.go | 2 +- ...ta_source_genesyscloud_organizations_me.go | 2 +- ...e_genesyscloud_quality_forms_evaluation.go | 2 +- ...ource_genesyscloud_quality_forms_survey.go | 2 +- ...ource_genesyscloud_routing_email_domain.go | 2 +- ..._genesyscloud_routing_email_domain_test.go | 2 +- ...ta_source_genesyscloud_routing_language.go | 2 +- ...urce_genesyscloud_routing_language_test.go | 6 + ...ta_source_genesyscloud_routing_settings.go | 45 -- ...urce_genesyscloud_routing_settings_test.go | 65 --- .../data_source_genesyscloud_routing_skill.go | 2 +- ...source_genesyscloud_routing_skill_group.go | 100 +++-- ...e_genesyscloud_routing_skill_group_test.go | 4 +- ..._genesyscloud_routing_utilization_label.go | 53 --- ..._source_genesyscloud_routing_wrapupcode.go | 2 +- genesyscloud/data_source_genesyscloud_user.go | 2 +- ...a_source_genesyscloud_widget_deployment.go | 2 +- ...rce_genesyscloud_widget_deployment_test.go | 20 +- .../genesyscloud_dependent_consumer_proxy.go | 2 +- ...mance_externalmetrics_definitions_proxy.go | 2 +- ...performance_externalmetrics_definitions.go | 2 +- ...rmance_externalmetrics_definitions_test.go | 2 +- ...loud_externalcontacts_contact_init_test.go | 1 - ...syscloud_externalcontacts_contact_proxy.go | 16 +- ...e_genesyscloud_externalcontacts_contact.go | 2 +- ...yscloud_externalcontacts_contact_schema.go | 6 +- ...esyscloud_externalcontacts_contact_test.go | 2 +- ...syscloud_externalcontacts_contact_utils.go | 2 +- .../genesyscloud_flow_loglevel_proxy.go | 2 +- .../resource_genesyscloud_flow_loglevel.go | 2 +- ...esource_genesyscloud_flow_loglevel_test.go | 2 +- .../genesyscloud_flow_milestone_proxy.go | 2 +- .../resource_genesyscloud_flow_milestone.go | 2 +- ...source_genesyscloud_flow_milestone_test.go | 2 +- ...ource_genesyscloud_flow_milestone_utils.go | 2 +- .../genesyscloud_flow_outcome_proxy.go | 2 +- .../resource_genesyscloud_flow_outcome.go | 2 +- ...esource_genesyscloud_flow_outcome_utils.go | 2 +- .../data_source_genesyscloud_group_test.go | 2 +- .../group/genesyscloud_group_proxy.go | 2 +- .../group/resource_genesyscloud_group.go | 2 +- .../group/resource_genesyscloud_group_test.go | 2 +- .../resource_genesyscloud_group_utils.go | 2 +- .../genesyscloud_group_roles_proxy.go | 2 +- ...esource_genesyscloud_group_roles_schema.go | 2 +- ...resource_genesyscloud_group_roles_utils.go | 2 +- .../idp_adfs/genesyscloud_idp_adfs_proxy.go | 2 +- .../resource_genesyscloud_idp_adfs.go | 2 +- .../resource_genesyscloud_idp_adfs_test.go | 2 +- .../idp_okta/genesyscloud_idp_okta_proxy.go | 2 +- .../resource_genesyscloud_idp_okta.go | 2 +- .../resource_genesyscloud_idp_okta_test.go | 2 +- .../genesyscloud_idp_salesforce_proxy.go | 2 +- .../resource_genesyscloud_idp_salesforce.go | 2 +- ...source_genesyscloud_idp_salesforce_test.go | 2 +- .../genesyscloud_integration_proxy.go | 2 +- .../resource_genesyscloud_integration.go | 2 +- .../resource_genesyscloud_integration_test.go | 10 +- ...resource_genesyscloud_integration_utils.go | 2 +- .../genesyscloud_integration_action_proxy.go | 2 +- ...esource_genesyscloud_integration_action.go | 2 +- ...ce_genesyscloud_integration_action_test.go | 38 +- ...e_genesyscloud_integration_action_utils.go | 2 +- ...enesyscloud_integration_credential_test.go | 4 +- ...nesyscloud_integration_credential_proxy.go | 2 +- ...rce_genesyscloud_integration_credential.go | 2 +- ...enesyscloud_integration_credential_test.go | 36 +- ...nesyscloud_integration_credential_utils.go | 4 +- ...oud_integration_custom_auth_action_test.go | 2 +- ...ud_integration_custom_auth_action_proxy.go | 2 +- ...syscloud_integration_custom_auth_action.go | 2 +- ...oud_integration_custom_auth_action_test.go | 6 +- ...ud_integration_custom_auth_action_utils.go | 2 +- ...yscloud_journey_outcome_predictor_proxy.go | 2 +- ..._genesyscloud_journey_outcome_predictor.go | 2 +- ...syscloud_journey_outcome_predictor_test.go | 2 +- .../genesyscloud_journey_views_proxy.go | 2 +- .../resource_genesyscloud_journey_views.go | 4 +- ...esource_genesyscloud_journey_views_test.go | 2 +- ...source_genesyscloud_journey_views_utils.go | 2 +- .../resource_genesyscloud_oauth_client.go | 2 +- ...esource_genesyscloud_oauth_client_proxy.go | 2 +- ...esource_genesyscloud_oauth_client_utils.go | 2 +- ...ce_genesyscloude_oauth_client_unit_test.go | 2 +- ...anization_authentication_settings_proxy.go | 2 +- ...ud_organization_authentication_settings.go | 2 +- ...ation_authentication_settings_unit_test.go | 2 +- ...anization_authentication_settings_utils.go | 2 +- ...syscloud_orgauthorization_pairing_proxy.go | 2 +- ...e_genesyscloud_orgauthorization_pairing.go | 2 +- ...rce_genesyscloud_outbound_cattemptlimit.go | 2 +- ...genesyscloud_outbound_messagingcampaign.go | 2 +- ...yscloud_outbound_messagingcampaign_test.go | 2 +- ...genesyscloud_outbound_messagingcampaign.go | 2 +- ...yscloud_outbound_messagingcampaign_test.go | 2 +- ...urce_genesyscloud_outbound_attemptlimit.go | 2 +- ...urce_genesyscloud_outbound_attemptlimit.go | 2 +- ...genesyscloud_outbound_attemptlimit_test.go | 2 +- ...syscloud_outbound_callabletimeset_proxy.go | 2 +- ...e_genesyscloud_outbound_callabletimeset.go | 2 +- ...yscloud_outbound_callabletimeset_schema.go | 6 +- ...esyscloud_outbound_callabletimeset_test.go | 2 +- ...syscloud_outbound_callabletimeset_utils.go | 2 +- ..._outbound_callanalysisresponseset_proxy.go | 2 +- ...scloud_outbound_callanalysisresponseset.go | 2 +- ...d_outbound_callanalysisresponseset_test.go | 2 +- ..._outbound_callanalysisresponseset_utils.go | 2 +- ...enesyscloud_outbound_campaign_init_test.go | 2 +- .../genesyscloud_outbound_campaign_proxy.go | 2 +- ...resource_genesyscloud_outbound_campaign.go | 2 +- ...rce_genesyscloud_outbound_campaign_test.go | 2 +- ...ce_genesyscloud_outbound_campaign_utils.go | 2 +- ...urce_genesyscloud_outbound_campaignrule.go | 2 +- ...enesyscloud_outbound_campaignrule_proxy.go | 2 +- ...urce_genesyscloud_outbound_campaignrule.go | 2 +- ...genesyscloud_outbound_campaignrule_test.go | 2 +- ...yscloud_outbound_campaignrule_unit_test.go | 2 +- ...enesyscloud_outbound_campaignrule_utils.go | 2 +- ...ource_genesyscloud_outbound_contactlist.go | 2 +- ...ource_genesyscloud_outbound_contactlist.go | 12 +- ..._genesyscloud_outbound_contactlist_test.go | 28 +- ...outbound_contact_list_contact_init_test.go | 42 ++ ...oud_outbound_contact_list_contact_proxy.go | 179 ++++++++ ...esyscloud_outbound_contact_list_contact.go | 153 +++++++ ...ud_outbound_contact_list_contact_schema.go | 147 +++++++ ...loud_outbound_contact_list_contact_test.go | 176 ++++++++ ...oud_outbound_contact_list_contact_utils.go | 182 ++++++++ ...scloud_outbound_contactlistfilter_proxy.go | 2 +- ...genesyscloud_outbound_contactlistfilter.go | 2 +- ...yscloud_outbound_contactlistfilter_test.go | 2 +- ...scloud_outbound_contactlistfilter_utils.go | 2 +- .../genesyscloud_outbound_dnclist_proxy.go | 2 +- .../resource_genesyscloud_outbound_dnclist.go | 2 +- ...ce_genesyscloud_outbound_dnclist_schema.go | 6 +- ...urce_genesyscloud_outbound_dnclist_test.go | 2 +- ...utbound_filespecificationtemplate_proxy.go | 2 +- ...loud_outbound_filespecificationtemplate.go | 2 +- ...outbound_filespecificationtemplate_test.go | 2 +- ...utbound_filespecificationtemplate_utils.go | 2 +- .../genesyscloud_outbound_ruleset_proxy.go | 2 +- .../resource_genesyscloud_outbound_ruleset.go | 2 +- ...urce_genesyscloud_outbound_ruleset_test.go | 2 +- ...genesyscloud_outbound_ruleset_unit_test.go | 2 +- ...rce_genesyscloud_outbound_ruleset_utils.go | 2 +- ...enesyscloud_outbound_sequence_init_test.go | 2 +- .../genesyscloud_outbound_sequence_proxy.go | 2 +- ...resource_genesyscloud_outbound_sequence.go | 2 +- ...rce_genesyscloud_outbound_sequence_test.go | 2 +- ...ce_genesyscloud_outbound_sequence_utils.go | 2 +- .../genesyscloud_outbound_settings_proxy.go | 2 +- ...resource_genesyscloud_outbound_settings.go | 2 +- ...e_genesyscloud_outbound_settings_schema.go | 10 +- ...ce_genesyscloud_outbound_settings_utils.go | 2 +- .../genesyscloud_wrapupcode_mappings_proxy.go | 2 +- ...loud_outbound_wrapupcode_mappings_utils.go | 2 +- ...enesyscloud_outbound_wrapupcodemappings.go | 2 +- ..._genesyscloud_processautomation_trigger.go | 2 +- .../process_automation_triggers_proxy.go | 2 +- .../process_automations_triggers_struct.go | 2 +- ..._genesyscloud_processautomation_trigger.go | 2 +- ...syscloud_processautomation_trigger_test.go | 2 +- genesyscloud/provider/division.go | 2 +- genesyscloud/provider/provider.go | 2 +- genesyscloud/provider/sdk_client_pool.go | 2 +- ...ording_media_retention_policy_init_test.go | 2 +- ..._recording_media_retention_policy_proxy.go | 3 +- ...scloud_recording_media_retention_policy.go | 2 +- ...d_recording_media_retention_policy_test.go | 2 +- ..._recording_media_retention_policy_utils.go | 2 +- .../resource_cache/datasource_cache.go | 2 +- .../resource_exporter/resource_exporter.go | 10 +- .../resource_exporter_custom.go | 8 +- ...source_genesyscloud_architect_schedules.go | 2 +- .../resource_genesyscloud_auth_division.go | 2 +- ...esource_genesyscloud_auth_division_test.go | 5 +- .../resource_genesyscloud_idp_generic.go | 2 +- .../resource_genesyscloud_idp_generic_test.go | 2 +- .../resource_genesyscloud_idp_gsuite.go | 2 +- .../resource_genesyscloud_idp_gsuite_test.go | 2 +- .../resource_genesyscloud_idp_onelogin.go | 2 +- ...resource_genesyscloud_idp_onelogin_test.go | 2 +- .../resource_genesyscloud_idp_ping.go | 2 +- .../resource_genesyscloud_idp_ping_test.go | 2 +- genesyscloud/resource_genesyscloud_init.go | 8 - .../resource_genesyscloud_init_test.go | 15 +- ...esource_genesyscloud_journey_action_map.go | 2 +- ...ce_genesyscloud_journey_action_map_test.go | 2 +- ...ce_genesyscloud_journey_action_template.go | 2 +- ...nesyscloud_journey_action_template_test.go | 2 +- .../resource_genesyscloud_journey_outcome.go | 2 +- ...ource_genesyscloud_journey_outcome_test.go | 2 +- .../resource_genesyscloud_journey_segment.go | 5 +- ...ource_genesyscloud_journey_segment_test.go | 78 ++-- ...esource_genesyscloud_knowledge_category.go | 2 +- ...ce_genesyscloud_knowledge_category_test.go | 2 +- ...esource_genesyscloud_knowledge_document.go | 2 +- ...ce_genesyscloud_knowledge_document_test.go | 2 +- ...nesyscloud_knowledge_document_variation.go | 2 +- ...cloud_knowledge_document_variation_test.go | 2 +- ...ce_genesyscloud_knowledge_knowledgebase.go | 2 +- ...nesyscloud_knowledge_knowledgebase_test.go | 2 +- .../resource_genesyscloud_knowledge_label.go | 2 +- ...ource_genesyscloud_knowledge_label_test.go | 2 +- ...urce_genesyscloud_knowledge_v1_category.go | 2 +- ...genesyscloud_knowledge_v1_category_test.go | 2 +- ...urce_genesyscloud_knowledge_v1_document.go | 2 +- ...genesyscloud_knowledge_v1_document_test.go | 2 +- .../resource_genesyscloud_location.go | 2 +- .../resource_genesyscloud_location_test.go | 2 +- ...e_genesyscloud_quality_forms_evaluation.go | 2 +- ...esyscloud_quality_forms_evaluation_test.go | 2 +- ...ource_genesyscloud_quality_forms_survey.go | 2 +- ..._genesyscloud_quality_forms_survey_test.go | 2 +- ...ource_genesyscloud_routing_email_domain.go | 2 +- ..._genesyscloud_routing_email_domain_test.go | 2 +- .../resource_genesyscloud_routing_language.go | 2 +- ...urce_genesyscloud_routing_language_test.go | 2 +- .../resource_genesyscloud_routing_settings.go | 308 -------------- .../resource_genesyscloud_routing_skill.go | 2 +- ...source_genesyscloud_routing_skill_group.go | 102 ++--- ...e_genesyscloud_routing_skill_group_test.go | 81 +++- ...esource_genesyscloud_routing_skill_test.go | 2 +- ...source_genesyscloud_routing_utilization.go | 389 ------------------ ..._genesyscloud_routing_utilization_label.go | 162 -------- ...esource_genesyscloud_routing_wrapupcode.go | 2 +- ...ce_genesyscloud_routing_wrapupcode_test.go | 2 +- genesyscloud/resource_genesyscloud_user.go | 42 +- .../resource_genesyscloud_user_test.go | 96 ++--- ...resource_genesyscloud_widget_deployment.go | 337 +++++---------- ...rce_genesyscloud_widget_deployment_test.go | 230 ++++------- ...scloud_responsemanagement_library_proxy.go | 2 +- ...genesyscloud_responsemanagement_library.go | 2 +- ...yscloud_responsemanagement_library_test.go | 2 +- ...cloud_responsemanagement_response_proxy.go | 2 +- ...enesyscloud_responsemanagement_response.go | 2 +- ...scloud_responsemanagement_response_test.go | 2 +- ...cloud_responsemanagement_response_utils.go | 2 +- ..._responsemanagement_responseasset_proxy.go | 2 +- ...scloud_responsemanagement_responseasset.go | 2 +- ...d_responsemanagement_responseasset_test.go | 2 +- .../genesyscloud_routing_email_route_proxy.go | 2 +- ...source_genesyscloud_routing_email_route.go | 2 +- ...e_genesyscloud_routing_email_route_test.go | 2 +- ..._genesyscloud_routing_email_route_utils.go | 2 +- .../data_source_genesyscloud_routing_queue.go | 5 +- .../genesyscloud_routing_queue_init_test.go | 2 + .../genesyscloud_routing_queue_proxy.go | 2 +- .../resource_genesyscloud_routing_queue.go | 63 +-- ...ource_genesyscloud_routing_queue_schema.go | 6 + ...esource_genesyscloud_routing_queue_test.go | 115 +++++- ...g_queue_conditional_group_routing_proxy.go | 2 +- ...routing_queue_conditional_group_routing.go | 2 +- ...ng_queue_conditional_group_routing_test.go | 3 +- ...eue_conditional_group_routing_unit_test.go | 2 +- ...ting_queue_outbound_email_address_proxy.go | 2 +- ...ud_routing_queue_outbound_email_address.go | 2 +- ...uting_queue_outbound_email_address_test.go | 2 +- ..._queue_outbound_email_address_unit_test.go | 2 +- ...genesyscloud_routing_settings_init_test.go | 40 ++ .../genesyscloud_routing_settings_proxy.go | 110 +++++ .../resource_genesyscloud_routing_settings.go | 216 ++++++++++ ...ce_genesyscloud_routing_settings_schema.go | 101 +++++ ...urce_genesyscloud_routing_settings_test.go | 8 +- ...enesyscloud_routing_sms_addresses_proxy.go | 2 +- ...nesyscloud_routing_sms_addresses_schema.go | 4 +- ...urce_genesyscloud_routing_sms_addresses.go | 2 +- ...genesyscloud_routing_sms_addresses_test.go | 2 +- ...esyscloud_routing_utilization_init_test.go | 47 +++ .../genesyscloud_routing_utilization_proxy.go | 99 +++++ ...source_genesyscloud_routing_utilization.go | 128 ++++++ ...genesyscloud_routing_utilization_schema.go | 167 ++++++++ ...e_genesyscloud_routing_utilization_test.go | 151 +++---- .../resource_routing_utilization_utils.go | 135 ++++++ ..._genesyscloud_routing_utilization_label.go | 33 ++ ...syscloud_routing_utilization_label_test.go | 4 +- ...oud_routing_utilization_label_init_test.go | 52 +++ ...yscloud_routing_utilization_label_proxy.go | 149 +++++++ ..._genesyscloud_routing_utilization_label.go | 123 ++++++ ...scloud_routing_utilization_label_schema.go | 61 +++ ...syscloud_routing_utilization_label_test.go | 29 +- ...yscloud_routing_utilization_label_utils.go | 54 +++ .../scripts/genesyscloud_scripts_proxy.go | 2 +- .../scripts/resource_genesyscloud_script.go | 2 +- .../resource_genesyscloud_script_test.go | 2 +- .../scripts/resource_scripts_schema.go | 4 +- .../station/genesyscloud_station_init_test.go | 2 +- .../station/genesyscloud_station_proxy.go | 2 +- ...esyscloud_task_management_workbin_proxy.go | 2 +- ...ce_genesyscloud_task_management_workbin.go | 2 +- ...nesyscloud_task_management_workbin_test.go | 2 +- ...syscloud_task_management_workitem_proxy.go | 2 +- ...e_genesyscloud_task_management_workitem.go | 2 +- ...yscloud_task_management_workitem_schema.go | 6 +- ...esyscloud_task_management_workitem_test.go | 2 +- ...loud_task_management_workitem_unit_test.go | 2 +- ...syscloud_task_management_workitem_utils.go | 2 +- ...d_task_management_workitem_schema_proxy.go | 2 +- ...yscloud_task_management_workitem_schema.go | 2 +- ...ud_task_management_workitem_schema_test.go | 2 +- ...sk_management_workitem_schema_unit_test.go | 2 +- ...d_task_management_workitem_schema_utils.go | 2 +- ..._genesyscloud_task_management_unit_test.go | 2 +- ...syscloud_task_management_worktype_proxy.go | 2 +- ...e_genesyscloud_task_management_worktype.go | 2 +- ...yscloud_task_management_worktype_schema.go | 4 +- ...esyscloud_task_management_worktype_test.go | 2 +- ...loud_task_management_worktype_unit_test.go | 2 +- ...syscloud_task_management_worktype_utils.go | 4 +- genesyscloud/team/genesyscloud_team_proxy.go | 2 +- .../team/resource_genesyscloud_team.go | 2 +- .../team/resource_genesyscloud_team_test.go | 2 +- .../resource_genesyscloud_team_unit_test.go | 2 +- .../team/resource_genesyscloud_team_utils.go | 2 +- ...phony_providers_edges_trunkbasesettings.go | 8 +- ..._providers_edges_trunkbasesettings_test.go | 2 +- ...oud_telephony_providers_edges_did_proxy.go | 2 +- ...ud_telephony_providers_edges_did_schema.go | 4 +- ...elephony_providers_edges_did_pool_proxy.go | 2 +- ...loud_telephony_providers_edges_did_pool.go | 2 +- ...lephony_providers_edges_did_pool_schema.go | 10 +- ...telephony_providers_edges_did_pool_test.go | 2 +- ...elephony_providers_edges_did_pool_utils.go | 2 +- ...ephony_providers_edges_edge_group_proxy.go | 2 +- ...ud_telephony_providers_edges_edge_group.go | 2 +- ...lephony_providers_edges_edge_group_test.go | 2 +- ...ephony_providers_edges_edge_group_utils.go | 2 +- ...ny_providers_edges_extension_pool_proxy.go | 2 +- ...y_providers_edges_extension_pool_schema.go | 16 +- ...elephony_providers_edges_extension_pool.go | 2 +- ...ony_providers_edges_extension_pool_test.go | 2 +- ...ephony_providers_edges_linebasesettings.go | 2 +- ...lephony_providers_edges_phone_init_test.go | 2 +- ...d_telephony_providers_edges_phone_proxy.go | 13 +- ...yscloud_telephony_providers_edges_phone.go | 12 +- ..._telephony_providers_edges_phone_schema.go | 4 +- ...ud_telephony_providers_edges_phone_test.go | 79 ++-- ...d_telephony_providers_edges_phone_utils.go | 5 +- ...phony_providers_edges_phonebasesettings.go | 2 +- ...providers_edges_phonebasesettings_proxy.go | 2 +- ...phony_providers_edges_phonebasesettings.go | 2 +- ..._providers_edges_phonebasesettings_test.go | 2 +- ...providers_edges_phonebasesettings_utils.go | 2 +- ...oud_telephony_providers_edges_site_test.go | 2 +- ...ud_telephony_providers_edges_site_proxy.go | 2 +- ...syscloud_telephony_providers_edges_site.go | 25 +- ...d_telephony_providers_edges_site_schema.go | 8 +- ...oud_telephony_providers_edges_site_test.go | 2 +- ...ud_telephony_providers_edges_site_utils.go | 2 +- ...ers_edges_site_outbound_route_init_test.go | 2 +- ...oviders_edges_site_outbound_route_proxy.go | 2 +- ...ony_providers_edges_site_outbound_route.go | 2 +- ...viders_edges_site_outbound_route_schema.go | 6 +- ...oviders_edges_site_outbound_route_utils.go | 2 +- ...yscloud_telephony_providers_edges_trunk.go | 2 +- ...d_telephony_providers_edges_trunk_proxy.go | 2 +- ...yscloud_telephony_providers_edges_trunk.go | 2 +- genesyscloud/tfexporter/export_common.go | 21 +- .../genesyscloud_resource_exporter.go | 69 +++- .../genesyscloud_resource_exporter_test.go | 2 +- .../resource_genesyscloud_tf_export.go | 23 +- .../resource_genesyscloud_tf_export_test.go | 274 +++++++++++- .../tfexporter/tf_exporter_resource_test.go | 18 +- .../genesyscloud_user_roles_proxy.go | 2 +- .../resource_genesyscloud_user_roles_utils.go | 2 +- .../util/feature_toggles/outbound_routes.go | 6 +- genesyscloud/util/lists/util_lists.go | 12 + .../util/resourcedata/resourcedata.go | 18 +- genesyscloud/util/test_utils.go | 3 +- .../util/util_basesetting_properties.go | 2 +- .../util/util_diagnostic_unit_test.go | 2 +- genesyscloud/util/util_diagnostics.go | 2 +- genesyscloud/util/util_divisions.go | 2 +- genesyscloud/util/util_domainentities.go | 2 +- genesyscloud/util/util_retries.go | 2 +- genesyscloud/validators/validators.go | 20 +- ...loud_webdeployments_configuration_proxy.go | 2 +- ...nesyscloud_webdeployments_configuration.go | 2 +- ...oud_webdeployments_configuration_schema.go | 16 +- ...cloud_webdeployments_configuration_test.go | 2 +- ...ud_webdeployments_configuration_journey.go | 2 +- ..._webdeployments_configuration_messenger.go | 2 +- ...eployments_configuration_support_center.go | 2 +- ...loud_webdeployments_configuration_utils.go | 4 +- ...yscloud_webdeployments_deployment_proxy.go | 2 +- ..._genesyscloud_webdeployments_deployment.go | 2 +- ...syscloud_webdeployments_deployment_test.go | 2 +- ...yscloud_webdeployments_deployment_utils.go | 2 +- go.mod | 4 +- go.sum | 10 +- jenkins/tests/Jenkinsfile | 37 +- main.go | 8 + .../05_update_remove_ignore_frequency_cap.tf | 2 +- .../01_basic_resource.tf} | 0 .../02_update_attributes.tf | 0 .../01_create_customer_scope.tf | 19 - ...2_recreate_external_segment_update_name.tf | 19 - ..._recreate_external_segment_id_force_new.tf | 20 - .../04_update_color_change.tf | 20 - .../03_recreate_scope_change_force_new.tf | 20 - ...pdate_remove_assignment_expirition_days.tf | 20 - 467 files changed, 4377 insertions(+), 2573 deletions(-) delete mode 100644 docs/data-sources/routing_settings.md create mode 100644 docs/resources/outbound_contact_list_contact.md create mode 100644 examples/resources/genesyscloud_outbound_contact_list_contact/apis.md create mode 100644 examples/resources/genesyscloud_outbound_contact_list_contact/resource.tf delete mode 100644 genesyscloud/data_source_genesyscloud_routing_settings.go delete mode 100644 genesyscloud/data_source_genesyscloud_routing_settings_test.go delete mode 100644 genesyscloud/data_source_genesyscloud_routing_utilization_label.go create mode 100644 genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_init_test.go create mode 100644 genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_proxy.go create mode 100644 genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact.go create mode 100644 genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_schema.go create mode 100644 genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_test.go create mode 100644 genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_utils.go delete mode 100644 genesyscloud/resource_genesyscloud_routing_settings.go delete mode 100644 genesyscloud/resource_genesyscloud_routing_utilization.go delete mode 100644 genesyscloud/resource_genesyscloud_routing_utilization_label.go create mode 100644 genesyscloud/routing_settings/genesyscloud_routing_settings_init_test.go create mode 100644 genesyscloud/routing_settings/genesyscloud_routing_settings_proxy.go create mode 100644 genesyscloud/routing_settings/resource_genesyscloud_routing_settings.go create mode 100644 genesyscloud/routing_settings/resource_genesyscloud_routing_settings_schema.go rename genesyscloud/{ => routing_settings}/resource_genesyscloud_routing_settings_test.go (98%) create mode 100644 genesyscloud/routing_utilization/genesyscloud_routing_utilization_init_test.go create mode 100644 genesyscloud/routing_utilization/genesyscloud_routing_utilization_proxy.go create mode 100644 genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization.go create mode 100644 genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_schema.go rename genesyscloud/{ => routing_utilization}/resource_genesyscloud_routing_utilization_test.go (77%) create mode 100644 genesyscloud/routing_utilization/resource_routing_utilization_utils.go create mode 100644 genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label.go rename genesyscloud/{ => routing_utilization_label}/data_source_genesyscloud_routing_utilization_label_test.go (95%) create mode 100644 genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_init_test.go create mode 100644 genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_proxy.go create mode 100644 genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label.go create mode 100644 genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_schema.go rename genesyscloud/{ => routing_utilization_label}/resource_genesyscloud_routing_utilization_label_test.go (69%) create mode 100644 genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_utils.go rename test/data/resource/genesyscloud_journey_segment/{basic_session_attributes/01_create_session_scope.tf => basic_attributes/01_basic_resource.tf} (100%) rename test/data/resource/genesyscloud_journey_segment/{basic_session_attributes => basic_attributes}/02_update_attributes.tf (100%) delete mode 100644 test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/01_create_customer_scope.tf delete mode 100644 test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/02_recreate_external_segment_update_name.tf delete mode 100644 test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/03_recreate_external_segment_id_force_new.tf delete mode 100644 test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/04_update_color_change.tf delete mode 100644 test/data/resource/genesyscloud_journey_segment/basic_session_attributes/03_recreate_scope_change_force_new.tf delete mode 100644 test/data/resource/genesyscloud_journey_segment/optional_attributes/04_update_remove_assignment_expirition_days.tf diff --git a/docs/data-sources/routing_settings.md b/docs/data-sources/routing_settings.md deleted file mode 100644 index 18d93fc8f..000000000 --- a/docs/data-sources/routing_settings.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -# generated by https://github.com/hashicorp/terraform-plugin-docs -page_title: "genesyscloud_routing_settings Data Source - terraform-provider-genesyscloud" -subcategory: "" -description: |- - An organization's routing settings ---- - -# genesyscloud_routing_settings (Data Source) - -An organization's routing settings - - - - -## Schema - -### Optional - -- `contactcenter` (Block List, Max: 1) Contact center settings (see [below for nested schema](#nestedblock--contactcenter)) -- `reset_agent_on_presence_change` (Boolean) Reset agent score when agent presence changes from off-queue to on-queue -- `transcription` (Block List, Max: 1) Transcription settings (see [below for nested schema](#nestedblock--transcription)) - -### Read-Only - -- `id` (String) The ID of this resource. - - -### Nested Schema for `contactcenter` - -Optional: - -- `remove_skills_from_blind_transfer` (Boolean) Strip skills from transfer - - - -### Nested Schema for `transcription` - -Optional: - -- `content_search_enabled` (Boolean) Setting to enable/disable content search -- `low_latency_transcription_enabled` (Boolean) Boolean flag indicating whether low latency transcription via Notification API is enabled -- `transcription` (String) Setting to enable/disable transcription capability.Valid values: Disabled, EnabledGlobally, EnabledQueueFlow -- `transcription_confidence_threshold` (Number) Configure confidence threshold. The possible values are from 1 to 100 diff --git a/docs/resources/journey_segment.md b/docs/resources/journey_segment.md index 66173abf6..785e47715 100644 --- a/docs/resources/journey_segment.md +++ b/docs/resources/journey_segment.md @@ -60,7 +60,7 @@ resource "genesyscloud_journey_segment" "example_journey_segment_resource" { - `color` (String) The hexadecimal color value of the segment. - `display_name` (String) The display name of the segment. -- `scope` (String) The target entity that a segment applies to.Valid values: Session, Customer. Changing the scope attribute will cause the existing journey_segment to be dropped and recreated with new ID. +- `scope` (String) The target entity that a segment applies to. Valid values: Session ### Optional diff --git a/docs/resources/outbound_contact_list_contact.md b/docs/resources/outbound_contact_list_contact.md new file mode 100644 index 000000000..98c79269f --- /dev/null +++ b/docs/resources/outbound_contact_list_contact.md @@ -0,0 +1,115 @@ +--- +page_title: "genesyscloud_outbound_contact_list_contact Resource - terraform-provider-genesyscloud" +subcategory: "" +description: |- + Genesys Cloud Outbound Contact List Contact +--- +# genesyscloud_outbound_contact_list_contact (Resource) + +Genesys Cloud Outbound Contact List Contact + +## API Usage +The following Genesys Cloud APIs are used by this resource. Ensure your OAuth Client has been granted the necessary scopes and permissions to perform these operations: + +- [POST /api/v2/outbound/contactlists/{contactListId}/contacts](https://developer.genesys.cloud/devapps/api-explorer#post-api-v2-outbound-contactlists--contactListId--contacts) +- [GET /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#get-api-v2-outbound-contactlists--contactListId--contacts--contactId-) +- [PUT /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#put-api-v2-outbound-contactlists--contactListId--contacts--contactId-) +- [DELETE /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#delete-api-v2-outbound-contactlists--contactListId--contacts--contactId-) + +## Example Usage + +```terraform +resource "genesyscloud_outbound_contact_list_contact" "contact" { + contact_list_id = genesyscloud_outbound_contact_list.contact_list.id + callable = true + data = { + Cell = "+1111111" + Home = "+2222222" + Email = "example@email.com" + } + phone_number_status { + key = "Cell" + callable = true + } + phone_number_status { + key = "Home" + callable = false + } + contactable_status { + media_type = "Voice" + contactable = true + column_status { + column = "Cell" + contactable = true + } + column_status { + column = "Home" + contactable = false + } + } + contactable_status { + media_type = "Email" + contactable = true + column_status { + column = "Email" + contactable = true + } + } +} +``` + + +## Schema + +### Required + +- `contact_list_id` (String) The identifier of the contact list containing this contact. +- `data` (Map of String) An ordered map of the contact's columns and corresponding values. + +### Optional + +- `callable` (Boolean) Indicates whether or not the contact can be called. Defaults to `false`. +- `clear_system_data` (Boolean) Clear system data. True means the system columns (attempts, callable status, etc) stored on the contact will be cleared if the contact already exists; false means they won't. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded. +- `contactable_status` (Block Set) A map of media types (Voice, SMS and Email) to ContactableStatus, which indicates if the contact can be contacted using the specified media type. (see [below for nested schema](#nestedblock--contactable_status)) +- `do_not_queue` (Boolean) Do not queue. True means that updated contacts will not have their positions in the queue altered, so contacts that have already been dialed will not be redialed. +For new contacts, this parameter has no effect; False means that updated contacts will be re-queued, according to the 'priority' parameter. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded. +- `phone_number_status` (Block Set) A map of phone number columns to PhoneNumberStatuses, which indicate if the phone number is callable or not. (see [below for nested schema](#nestedblock--phone_number_status)) +- `priority` (Boolean) Contact priority. True means the contact(s) will be dialed next; false means the contact will go to the end of the contact queue. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded. + +### Read-Only + +- `id` (String) The ID of this resource. + + +### Nested Schema for `contactable_status` + +Required: + +- `contactable` (Boolean) Indicates whether or not the entire contact is contactable for the associated media type. +- `media_type` (String) The key which identifies the media type (Voice, SMS and Email). + +Optional: + +- `column_status` (Block Set) A map of individual contact method columns to whether the individual column is contactable for the associated media type. (see [below for nested schema](#nestedblock--contactable_status--column_status)) + + +### Nested Schema for `contactable_status.column_status` + +Required: + +- `column` (String) The key which identifies the contact method column. +- `contactable` (Boolean) Indicates whether or not an individual contact method column is contactable. + + + + +### Nested Schema for `phone_number_status` + +Required: + +- `callable` (Boolean) Indicates whether or not a phone number is callable. +- `key` (String) Phone number column identifier. + diff --git a/docs/resources/routing_queue.md b/docs/resources/routing_queue.md index 3921981d7..a3f89f294 100644 --- a/docs/resources/routing_queue.md +++ b/docs/resources/routing_queue.md @@ -105,6 +105,7 @@ resource "genesyscloud_routing_queue" "example_queue" { - `media_settings_message` (Block List, Max: 1) Message media settings. (see [below for nested schema](#nestedblock--media_settings_message)) - `members` (Set of Object) Users in the queue. If not set, this resource will not manage members. If a user is already assigned to this queue via a group, attempting to assign them using this field will cause an error to be thrown. (see [below for nested schema](#nestedatt--members)) - `message_in_queue_flow_id` (String) The in-queue flow ID to use for message conversations waiting in queue. +- `on_hold_prompt_id` (String) The audio to be played when calls on this queue are on hold. If not configured, the default on-hold music will play. - `outbound_email_address` (Block List, Max: 1, Deprecated) The outbound email address settings for this queue. (see [below for nested schema](#nestedblock--outbound_email_address)) - `outbound_messaging_sms_address_id` (String) The unique ID of the outbound messaging SMS address for the queue. - `queue_flow_id` (String) The in-queue flow ID to use for call conversations waiting in queue. diff --git a/docs/resources/routing_settings.md b/docs/resources/routing_settings.md index 548add012..ff9c5d9e8 100644 --- a/docs/resources/routing_settings.md +++ b/docs/resources/routing_settings.md @@ -65,6 +65,8 @@ Optional: - `content_search_enabled` (Boolean) Setting to enable/disable content search - `low_latency_transcription_enabled` (Boolean) Boolean flag indicating whether low latency transcription via Notification API is enabled +- `pci_dss_redaction_enabled` (Boolean) Setting to enable/disable PCI DSS Redaction +- `pii_redaction_enabled` (Boolean) Setting to enable/disable PII Redaction - `transcription` (String) Setting to enable/disable transcription capability.Valid values: Disabled, EnabledGlobally, EnabledQueueFlow - `transcription_confidence_threshold` (Number) Configure confidence threshold. The possible values are from 1 to 100 diff --git a/docs/resources/tf_export.md b/docs/resources/tf_export.md index 4fbff2237..b68964897 100644 --- a/docs/resources/tf_export.md +++ b/docs/resources/tf_export.md @@ -60,6 +60,7 @@ resource "genesyscloud_tf_export" "export" { ### Optional +- `compress` (Boolean) Compress exported results using zip format Defaults to `false`. - `directory` (String) Directory where the config and state files will be exported. Defaults to `./genesyscloud`. - `enable_dependency_resolution` (Boolean) Adds a "depends_on" attribute to genesyscloud_flow resources with a list of resources that are referenced inside the flow configuration . This also resolves and exports all the dependent resources for any given resource. Defaults to `false`. - `exclude_attributes` (List of String) Attributes to exclude from the config when exporting resources. Each value should be of the form {resource_name}.{attribute}, e.g. 'genesyscloud_user.skills'. Excluded attributes must be optional. diff --git a/docs/resources/widget_deployment.md b/docs/resources/widget_deployment.md index c91b869b1..8153c0069 100644 --- a/docs/resources/widget_deployment.md +++ b/docs/resources/widget_deployment.md @@ -27,9 +27,8 @@ resource "genesyscloud_widget_deployment" "mywidget" { client_type = "v1" authentication_required = true disabled = true - client_config { - authentication_url = "https://examplewebsite.com" - webchat_skin = "modern-caret-skin" + third_party_client_config = { + foo = "bar" } allowed_domains = [] } @@ -41,16 +40,18 @@ resource "genesyscloud_widget_deployment" "mywidget" { ### Required - `authentication_required` (Boolean) When true, the customer members starting a chat must be authenticated by supplying their JWT to the create operation. -- `client_type` (String) The type of display widget for which this Deployment is configured, which controls the administrator settings shown.Valid values: v1, v2, v1-http, third-party. +- `client_type` (String) The type of display widget for which this Deployment is configured, which controls the administrator settings shown. Valid values: v1, v1-http, v2, third-party - `disabled` (Boolean) When true, all create chat operations using this Deployment will be rejected. - `name` (String) Name of the Widget Deployment. ### Optional - `allowed_domains` (List of String) The list of domains that are approved to use this Deployment; the list will be added to CORS headers for ease of web use -- `client_config` (Block Set, Max: 1) The V1 and V1-http client configuration options that should be made available to the clients of this Deployment. (see [below for nested schema](#nestedblock--client_config)) +- `client_config` (Block Set, Max: 1, Deprecated) The V1 and V1-http client configuration options that should be made available to the clients of this Deployment. (see [below for nested schema](#nestedblock--client_config)) - `description` (String) Widget Deployment description. - `flow_id` (String) The Inbound Chat Flow to run when new chats are initiated under this Deployment +- `third_party_client_config` (Map of String) The third party client configuration options that should be made available to the clients of this Deployment. +- `v2_client_config` (Map of String) The v2 client configuration options that should be made available to the clients of this Deployment. ### Read-Only @@ -59,11 +60,8 @@ resource "genesyscloud_widget_deployment" "mywidget" { ### Nested Schema for `client_config` -Required: - -- `webchat_skin` (String) Skin for the webchat user. (basic, modern-caret-skin) - Optional: - `authentication_url` (String) Url endpoint to perform_authentication +- `webchat_skin` (String) Skin for the webchat user. (basic, modern-caret-skin) diff --git a/examples/resources/genesyscloud_outbound_contact_list_contact/apis.md b/examples/resources/genesyscloud_outbound_contact_list_contact/apis.md new file mode 100644 index 000000000..239567e26 --- /dev/null +++ b/examples/resources/genesyscloud_outbound_contact_list_contact/apis.md @@ -0,0 +1,4 @@ +- [POST /api/v2/outbound/contactlists/{contactListId}/contacts](https://developer.genesys.cloud/devapps/api-explorer#post-api-v2-outbound-contactlists--contactListId--contacts) +- [GET /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#get-api-v2-outbound-contactlists--contactListId--contacts--contactId-) +- [PUT /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#put-api-v2-outbound-contactlists--contactListId--contacts--contactId-) +- [DELETE /api/v2/outbound/contactlists/{contactListId}/contacts/{contactId}](https://developer.genesys.cloud/devapps/api-explorer#delete-api-v2-outbound-contactlists--contactListId--contacts--contactId-) \ No newline at end of file diff --git a/examples/resources/genesyscloud_outbound_contact_list_contact/resource.tf b/examples/resources/genesyscloud_outbound_contact_list_contact/resource.tf new file mode 100644 index 000000000..07bd64312 --- /dev/null +++ b/examples/resources/genesyscloud_outbound_contact_list_contact/resource.tf @@ -0,0 +1,37 @@ +resource "genesyscloud_outbound_contact_list_contact" "contact" { + contact_list_id = genesyscloud_outbound_contact_list.contact_list.id + callable = true + data = { + Cell = "+1111111" + Home = "+2222222" + Email = "example@email.com" + } + phone_number_status { + key = "Cell" + callable = true + } + phone_number_status { + key = "Home" + callable = false + } + contactable_status { + media_type = "Voice" + contactable = true + column_status { + column = "Cell" + contactable = true + } + column_status { + column = "Home" + contactable = false + } + } + contactable_status { + media_type = "Email" + contactable = true + column_status { + column = "Email" + contactable = true + } + } +} \ No newline at end of file diff --git a/examples/resources/genesyscloud_widget_deployment/resource.tf b/examples/resources/genesyscloud_widget_deployment/resource.tf index 1070a0fde..fd79e2b04 100644 --- a/examples/resources/genesyscloud_widget_deployment/resource.tf +++ b/examples/resources/genesyscloud_widget_deployment/resource.tf @@ -5,9 +5,8 @@ resource "genesyscloud_widget_deployment" "mywidget" { client_type = "v1" authentication_required = true disabled = true - client_config { - authentication_url = "https://examplewebsite.com" - webchat_skin = "modern-caret-skin" + third_party_client_config = { + foo = "bar" } allowed_domains = [] } \ No newline at end of file diff --git a/genesyscloud/architect_datatable/data_source_genesyscloud_architect_datatable.go b/genesyscloud/architect_datatable/data_source_genesyscloud_architect_datatable.go index 417f3779c..fe8f6f8e6 100644 --- a/genesyscloud/architect_datatable/data_source_genesyscloud_architect_datatable.go +++ b/genesyscloud/architect_datatable/data_source_genesyscloud_architect_datatable.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceArchitectDatatableRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable.go b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable.go index 166cd32e5..0aa344ef2 100644 --- a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable.go +++ b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type Datatableproperty struct { diff --git a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_proxy.go b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_proxy.go index 8b65f6468..9223c15f3 100644 --- a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_proxy.go +++ b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_proxy.go @@ -6,7 +6,7 @@ import ( "errors" "net/http" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // internalProxy holds a proxy instance that can be used throughout the package diff --git a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_test.go b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_test.go index 89f10ec74..bd6b97a9e 100644 --- a/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_test.go +++ b/genesyscloud/architect_datatable/resource_genesyscloud_architect_datatable_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectDatatable(t *testing.T) { diff --git a/genesyscloud/architect_datatable_row/genesyscloud_architect_datatable_row_utils.go b/genesyscloud/architect_datatable_row/genesyscloud_architect_datatable_row_utils.go index 669cc7e6e..a346d63de 100644 --- a/genesyscloud/architect_datatable_row/genesyscloud_architect_datatable_row_utils.go +++ b/genesyscloud/architect_datatable_row/genesyscloud_architect_datatable_row_utils.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // Row IDs structured as {table-id}/{key-value} diff --git a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row.go b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row.go index abf3efdf7..74a126ee4 100644 --- a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row.go +++ b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type Datatableproperty struct { diff --git a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_proxy.go b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_proxy.go index 300169eb9..1f94400bc 100644 --- a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_proxy.go +++ b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_proxy.go @@ -5,7 +5,7 @@ import ( "encoding/json" "errors" "github.com/mitchellh/mapstructure" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "net/http" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" diff --git a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_test.go b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_test.go index 9acccd551..070e1bc05 100644 --- a/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_test.go +++ b/genesyscloud/architect_datatable_row/resource_genesyscloud_architect_datatable_row_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectDatatableRow(t *testing.T) { diff --git a/genesyscloud/architect_emergencygroup/genesyscloud_architect_emergencygroup_proxy.go b/genesyscloud/architect_emergencygroup/genesyscloud_architect_emergencygroup_proxy.go index ac8b2a6d1..01d41745a 100644 --- a/genesyscloud/architect_emergencygroup/genesyscloud_architect_emergencygroup_proxy.go +++ b/genesyscloud/architect_emergencygroup/genesyscloud_architect_emergencygroup_proxy.go @@ -3,7 +3,7 @@ package architect_emergencygroup import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *architectEmergencyGroupProxy diff --git a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup.go b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup.go index 4e2f8622d..9523a2472 100644 --- a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup.go +++ b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllEmergencyGroups(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_test.go b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_test.go index fdc824edb..0cf52ad50 100644 --- a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_test.go +++ b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectEmergencyGroups(t *testing.T) { diff --git a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_utils.go b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_utils.go index e2ba82d75..11ecb8e35 100644 --- a/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_utils.go +++ b/genesyscloud/architect_emergencygroup/resource_genesyscloud_architect_emergencygroup_utils.go @@ -2,7 +2,7 @@ package architect_emergencygroup import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildSdkEmergencyGroupCallFlows(d *schema.ResourceData) *[]platformclientv2.Emergencycallflow { diff --git a/genesyscloud/architect_flow/resource_genesyscloud_architect_flow_proxy.go b/genesyscloud/architect_flow/resource_genesyscloud_architect_flow_proxy.go index 219ff6ece..f0642e4e5 100644 --- a/genesyscloud/architect_flow/resource_genesyscloud_architect_flow_proxy.go +++ b/genesyscloud/architect_flow/resource_genesyscloud_architect_flow_proxy.go @@ -3,7 +3,7 @@ package architect_flow import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" ) diff --git a/genesyscloud/architect_flow/resource_genesyscloud_flow.go b/genesyscloud/architect_flow/resource_genesyscloud_flow.go index b5693448c..6c70707fd 100644 --- a/genesyscloud/architect_flow/resource_genesyscloud_flow.go +++ b/genesyscloud/architect_flow/resource_genesyscloud_flow.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllFlows(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/architect_flow/resource_genesyscloud_flow_test.go b/genesyscloud/architect_flow/resource_genesyscloud_flow_test.go index 4066bc273..bb721ed40 100644 --- a/genesyscloud/architect_flow/resource_genesyscloud_flow_test.go +++ b/genesyscloud/architect_flow/resource_genesyscloud_flow_test.go @@ -17,7 +17,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // lockFlow will search for a specific flow and then lock it. This is to specifically test the force_unlock flag where I want to create a flow, simulate some one locking it and then attempt to diff --git a/genesyscloud/architect_grammar/genesyscloud_architect_grammar_proxy.go b/genesyscloud/architect_grammar/genesyscloud_architect_grammar_proxy.go index 45a5a593f..36c73863d 100644 --- a/genesyscloud/architect_grammar/genesyscloud_architect_grammar_proxy.go +++ b/genesyscloud/architect_grammar/genesyscloud_architect_grammar_proxy.go @@ -6,7 +6,7 @@ import ( "log" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar.go b/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar.go index 0017ec632..6fe8bff54 100644 --- a/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar.go +++ b/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar.go @@ -15,7 +15,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar_test.go b/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar_test.go index 05f319590..6d81a2d27 100644 --- a/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar_test.go +++ b/genesyscloud/architect_grammar/resource_genesyscloud_architect_grammar_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectGrammar(t *testing.T) { diff --git a/genesyscloud/architect_grammar_language/genesyscloud_architect_grammar_language_proxy.go b/genesyscloud/architect_grammar_language/genesyscloud_architect_grammar_language_proxy.go index 6f081a407..6647b9801 100644 --- a/genesyscloud/architect_grammar_language/genesyscloud_architect_grammar_language_proxy.go +++ b/genesyscloud/architect_grammar_language/genesyscloud_architect_grammar_language_proxy.go @@ -8,7 +8,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/files" "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type FileType int diff --git a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language.go b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language.go index 4a376d7b8..b8423f1a4 100644 --- a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language.go +++ b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language.go @@ -16,7 +16,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_test.go b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_test.go index e36831ea4..7bc029fd3 100644 --- a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_test.go +++ b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_test.go @@ -15,7 +15,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectGrammarLanguage(t *testing.T) { diff --git a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_utils.go b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_utils.go index 58504f1f2..97f30023c 100644 --- a/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_utils.go +++ b/genesyscloud/architect_grammar_language/resource_genesyscloud_architect_grammar_language_utils.go @@ -13,7 +13,7 @@ import ( "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_ivr/data_source_genesyscloud_architect_ivr_test.go b/genesyscloud/architect_ivr/data_source_genesyscloud_architect_ivr_test.go index e04f747f2..97345394d 100644 --- a/genesyscloud/architect_ivr/data_source_genesyscloud_architect_ivr_test.go +++ b/genesyscloud/architect_ivr/data_source_genesyscloud_architect_ivr_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "github.com/google/uuid" diff --git a/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy.go b/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy.go index d9cec0a4f..fdd8c9c55 100644 --- a/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy.go +++ b/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy.go @@ -7,7 +7,7 @@ import ( utillists "terraform-provider-genesyscloud/genesyscloud/util/lists" "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy_unit_test.go b/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy_unit_test.go index 723cd5c40..9c00434e0 100644 --- a/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy_unit_test.go +++ b/genesyscloud/architect_ivr/genesyscloud_architect_ivr_proxy_unit_test.go @@ -11,7 +11,7 @@ import ( "testing" "github.com/google/uuid" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestUnitUploadIvrDnisChunksSuccess(t *testing.T) { diff --git a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr.go b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr.go index 35be99a30..ab6fb8e76 100644 --- a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr.go +++ b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // getAllIvrConfigs retrieves all architect IVRs and is used for the exporter diff --git a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_schema.go b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_schema.go index cb0c48118..363b5f8fb 100644 --- a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_schema.go +++ b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_schema.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const ( @@ -65,7 +65,7 @@ func ResourceArchitectIvrConfig() *schema.Resource { Type: schema.TypeSet, Optional: true, Computed: true, - Elem: &schema.Schema{Type: schema.TypeString, ValidateDiagFunc: gcloud.ValidatePhoneNumber}, + Elem: &schema.Schema{Type: schema.TypeString, ValidateDiagFunc: validators.ValidatePhoneNumber}, }, "open_hours_flow_id": { Description: "ID of inbound call flow for open hours.", diff --git a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_test.go b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_test.go index fcf3df126..166d0320e 100644 --- a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_test.go +++ b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIvrConfigBasic(t *testing.T) { diff --git a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_unit_test.go b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_unit_test.go index 4f7751e75..b5c97be4b 100644 --- a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_unit_test.go +++ b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_unit_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_utils.go b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_utils.go index be422dd34..cfe4f8446 100644 --- a/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_utils.go +++ b/genesyscloud/architect_ivr/resource_genesyscloud_architect_ivr_utils.go @@ -8,7 +8,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type IvrConfigStruct struct { diff --git a/genesyscloud/architect_schedulegroups/genesyscloud_architect_schedulegroups_proxy.go b/genesyscloud/architect_schedulegroups/genesyscloud_architect_schedulegroups_proxy.go index 53f3b06ef..44bf1b3ee 100644 --- a/genesyscloud/architect_schedulegroups/genesyscloud_architect_schedulegroups_proxy.go +++ b/genesyscloud/architect_schedulegroups/genesyscloud_architect_schedulegroups_proxy.go @@ -3,7 +3,7 @@ package architect_schedulegroups import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups.go b/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups.go index 5a0b08774..3b8bd4e45 100644 --- a/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups.go +++ b/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups.go @@ -15,7 +15,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups_test.go b/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups_test.go index fc0b0a846..b654c0254 100644 --- a/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups_test.go +++ b/genesyscloud/architect_schedulegroups/resource_genesyscloud_architect_schedulegroups_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectScheduleGroups(t *testing.T) { diff --git a/genesyscloud/architect_schedules/genesyscloud_architect_schedules_proxy.go b/genesyscloud/architect_schedules/genesyscloud_architect_schedules_proxy.go index adb92461a..9fb733127 100644 --- a/genesyscloud/architect_schedules/genesyscloud_architect_schedules_proxy.go +++ b/genesyscloud/architect_schedules/genesyscloud_architect_schedules_proxy.go @@ -6,7 +6,7 @@ import ( "log" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules.go b/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules.go index b040cd8a9..7d0c6ba1e 100644 --- a/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules.go +++ b/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules.go @@ -19,7 +19,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/constants" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const timeFormat = "2006-01-02T15:04:05.000000" diff --git a/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules_test.go b/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules_test.go index 29d51b99b..f780c8d5e 100644 --- a/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules_test.go +++ b/genesyscloud/architect_schedules/resource_genesyscloud_architect_schedules_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceArchitectSchedules(t *testing.T) { diff --git a/genesyscloud/architect_user_prompt/genesyscloud_architect_user_prompt_proxy.go b/genesyscloud/architect_user_prompt/genesyscloud_architect_user_prompt_proxy.go index 64ca3981b..25ac10cb1 100644 --- a/genesyscloud/architect_user_prompt/genesyscloud_architect_user_prompt_proxy.go +++ b/genesyscloud/architect_user_prompt/genesyscloud_architect_user_prompt_proxy.go @@ -4,7 +4,7 @@ import ( "context" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // internalProxy holds a proxy instance that can be used throughout the package diff --git a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt.go b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt.go index f28ae4274..6c7a11825 100644 --- a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt.go +++ b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllUserPrompts(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_test.go b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_test.go index 2e13a8771..9ed5d9cce 100644 --- a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_test.go +++ b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_test.go @@ -16,7 +16,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceUserPromptBasic(t *testing.T) { diff --git a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_utils.go b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_utils.go index 8e9b6436f..615a715c3 100644 --- a/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_utils.go +++ b/genesyscloud/architect_user_prompt/resource_genesyscloud_architect_user_prompt_utils.go @@ -16,7 +16,7 @@ import ( files "terraform-provider-genesyscloud/genesyscloud/util/files" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type PromptAudioData struct { diff --git a/genesyscloud/auth_role/data_source_genesyscloud_auth_role.go b/genesyscloud/auth_role/data_source_genesyscloud_auth_role.go index d83b1380b..a5539383f 100644 --- a/genesyscloud/auth_role/data_source_genesyscloud_auth_role.go +++ b/genesyscloud/auth_role/data_source_genesyscloud_auth_role.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" "time" diff --git a/genesyscloud/auth_role/genesyscloud_auth_role_proxy.go b/genesyscloud/auth_role/genesyscloud_auth_role_proxy.go index cce2393b4..07200518c 100644 --- a/genesyscloud/auth_role/genesyscloud_auth_role_proxy.go +++ b/genesyscloud/auth_role/genesyscloud_auth_role_proxy.go @@ -3,7 +3,10 @@ package auth_role import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -39,14 +42,17 @@ type authRoleProxy struct { deleteAuthRoleAttr deleteAuthRoleFunc restoreDefaultRolesAttr restoreDefaultRolesFunc getAllowedPermissionsAttr getAllowedPermissionsFunc + authRoleCache rc.CacheInterface[platformclientv2.Domainorganizationrole] } // newAuthRoleProxy initializes the auth role proxy with all of the data needed to communicate with Genesys Cloud func newAuthRoleProxy(clientConfig *platformclientv2.Configuration) *authRoleProxy { api := platformclientv2.NewAuthorizationApiWithConfig(clientConfig) + authRoleCache := rc.NewResourceCache[platformclientv2.Domainorganizationrole]() // Create Cache for authRole resource return &authRoleProxy{ clientConfig: clientConfig, authorizationApi: api, + authRoleCache: authRoleCache, createAuthRoleAttr: createAuthRoleFn, getAllAuthRoleAttr: getAllAuthRoleFn, getAuthRoleIdByNameAttr: getAuthRoleIdByNameFn, @@ -85,11 +91,17 @@ func (p *authRoleProxy) getAuthRoleIdByName(ctx context.Context, name string) (i // getAuthRoleById returns a single Genesys Cloud auth role by Id func (p *authRoleProxy) getAuthRoleById(ctx context.Context, id string) (authRole *platformclientv2.Domainorganizationrole, response *platformclientv2.APIResponse, err error) { + if authRole := rc.GetCacheItem(p.authRoleCache, id); authRole != nil { + return authRole, nil, nil + } return p.getAuthRoleByIdAttr(ctx, p, id) } // getAuthRoleById returns a single Genesys Cloud auth role by Id func (p *authRoleProxy) getDefaultRoleById(ctx context.Context, defaultRoleId string) (roleId string, response *platformclientv2.APIResponse, err error) { + if authRole := rc.GetCacheItem(p.authRoleCache, defaultRoleId); authRole != nil { + return *authRole.Id, nil, nil + } return p.getDefaultRoleIdAttr(ctx, p, defaultRoleId) } @@ -148,6 +160,11 @@ func getAllAuthRoleFn(ctx context.Context, p *authRoleProxy) (*[]platformclientv allAuthRoles = append(allAuthRoles, *roles.Entities...) } + //Cache the Auth Role resource into the p.authRoleCache for later use + for _, authRole := range allAuthRoles { + rc.SetCache(p.authRoleCache, *authRole.Id, authRole) + } + return &allAuthRoles, resp, nil } diff --git a/genesyscloud/auth_role/resource_genesyscloud_auth_role.go b/genesyscloud/auth_role/resource_genesyscloud_auth_role.go index 09eb4eaee..37b70ee8a 100644 --- a/genesyscloud/auth_role/resource_genesyscloud_auth_role.go +++ b/genesyscloud/auth_role/resource_genesyscloud_auth_role.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/auth_role/resource_genesyscloud_auth_role_test.go b/genesyscloud/auth_role/resource_genesyscloud_auth_role_test.go index f31c54c02..80782c374 100644 --- a/genesyscloud/auth_role/resource_genesyscloud_auth_role_test.go +++ b/genesyscloud/auth_role/resource_genesyscloud_auth_role_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceAuthRoleDefault(t *testing.T) { diff --git a/genesyscloud/auth_role/resource_genesyscloud_auth_role_utils.go b/genesyscloud/auth_role/resource_genesyscloud_auth_role_utils.go index 64a735483..7efb5f4e1 100644 --- a/genesyscloud/auth_role/resource_genesyscloud_auth_role_utils.go +++ b/genesyscloud/auth_role/resource_genesyscloud_auth_role_utils.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func validatePermissionPolicy(proxy *authRoleProxy, policy platformclientv2.Domainpermissionpolicy) (*platformclientv2.APIResponse, error) { diff --git a/genesyscloud/authorization_product/data_source_genesyscloud_authorization_product_test.go b/genesyscloud/authorization_product/data_source_genesyscloud_authorization_product_test.go index dfe58bcfa..f26f62ca5 100644 --- a/genesyscloud/authorization_product/data_source_genesyscloud_authorization_product_test.go +++ b/genesyscloud/authorization_product/data_source_genesyscloud_authorization_product_test.go @@ -7,7 +7,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "golang.org/x/net/context" diff --git a/genesyscloud/authorization_product/genesyscloud_authorization_product_proxy.go b/genesyscloud/authorization_product/genesyscloud_authorization_product_proxy.go index 2e2887b38..0a920b87a 100644 --- a/genesyscloud/authorization_product/genesyscloud_authorization_product_proxy.go +++ b/genesyscloud/authorization_product/genesyscloud_authorization_product_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/data_source_genesyscloud_architect_schedules.go b/genesyscloud/data_source_genesyscloud_architect_schedules.go index 9c7f761f5..a1b604725 100644 --- a/genesyscloud/data_source_genesyscloud_architect_schedules.go +++ b/genesyscloud/data_source_genesyscloud_architect_schedules.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceSchedule() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_auth_division.go b/genesyscloud/data_source_genesyscloud_auth_division.go index fe39a49bf..dbf0c9e84 100644 --- a/genesyscloud/data_source_genesyscloud_auth_division.go +++ b/genesyscloud/data_source_genesyscloud_auth_division.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceAuthDivision() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_auth_division_home.go b/genesyscloud/data_source_genesyscloud_auth_division_home.go index f2b7371b0..bf12bec4b 100644 --- a/genesyscloud/data_source_genesyscloud_auth_division_home.go +++ b/genesyscloud/data_source_genesyscloud_auth_division_home.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceAuthDivisionHome() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_journey_action_map.go b/genesyscloud/data_source_genesyscloud_journey_action_map.go index 0abfcc3b3..4f02d9b46 100644 --- a/genesyscloud/data_source_genesyscloud_journey_action_map.go +++ b/genesyscloud/data_source_genesyscloud_journey_action_map.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceJourneyActionMap() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_journey_action_template.go b/genesyscloud/data_source_genesyscloud_journey_action_template.go index 06b7db592..32f4f93e8 100644 --- a/genesyscloud/data_source_genesyscloud_journey_action_template.go +++ b/genesyscloud/data_source_genesyscloud_journey_action_template.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceJourneyActionTemplate() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_journey_outcome.go b/genesyscloud/data_source_genesyscloud_journey_outcome.go index 4b2cefa10..ec3473602 100644 --- a/genesyscloud/data_source_genesyscloud_journey_outcome.go +++ b/genesyscloud/data_source_genesyscloud_journey_outcome.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceJourneyOutcome() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_journey_segment.go b/genesyscloud/data_source_genesyscloud_journey_segment.go index e6c304c84..d870635b8 100644 --- a/genesyscloud/data_source_genesyscloud_journey_segment.go +++ b/genesyscloud/data_source_genesyscloud_journey_segment.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceJourneySegment() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_knowledge_category.go b/genesyscloud/data_source_genesyscloud_knowledge_category.go index 79411ff3f..27801fee5 100644 --- a/genesyscloud/data_source_genesyscloud_knowledge_category.go +++ b/genesyscloud/data_source_genesyscloud_knowledge_category.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceKnowledgeCategory() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_knowledge_knowledgebase.go b/genesyscloud/data_source_genesyscloud_knowledge_knowledgebase.go index 3ae92509f..96f15c63c 100644 --- a/genesyscloud/data_source_genesyscloud_knowledge_knowledgebase.go +++ b/genesyscloud/data_source_genesyscloud_knowledge_knowledgebase.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceKnowledgeKnowledgebase() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_knowledge_label.go b/genesyscloud/data_source_genesyscloud_knowledge_label.go index 97c2c4454..45312d9d4 100644 --- a/genesyscloud/data_source_genesyscloud_knowledge_label.go +++ b/genesyscloud/data_source_genesyscloud_knowledge_label.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceKnowledgeLabel() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_location.go b/genesyscloud/data_source_genesyscloud_location.go index dd7380a73..2063e68b5 100644 --- a/genesyscloud/data_source_genesyscloud_location.go +++ b/genesyscloud/data_source_genesyscloud_location.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceLocation() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_organizations_me.go b/genesyscloud/data_source_genesyscloud_organizations_me.go index cc75781be..fe8a15dbe 100644 --- a/genesyscloud/data_source_genesyscloud_organizations_me.go +++ b/genesyscloud/data_source_genesyscloud_organizations_me.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" ) diff --git a/genesyscloud/data_source_genesyscloud_quality_forms_evaluation.go b/genesyscloud/data_source_genesyscloud_quality_forms_evaluation.go index 15bdd25b7..a69e74b4a 100644 --- a/genesyscloud/data_source_genesyscloud_quality_forms_evaluation.go +++ b/genesyscloud/data_source_genesyscloud_quality_forms_evaluation.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type EvaluationFormQuestionGroupStruct struct { diff --git a/genesyscloud/data_source_genesyscloud_quality_forms_survey.go b/genesyscloud/data_source_genesyscloud_quality_forms_survey.go index 9b684ed24..c3f3d84ae 100644 --- a/genesyscloud/data_source_genesyscloud_quality_forms_survey.go +++ b/genesyscloud/data_source_genesyscloud_quality_forms_survey.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceQualityFormsSurvey() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_routing_email_domain.go b/genesyscloud/data_source_genesyscloud_routing_email_domain.go index 4ea36c8ed..2e9266932 100644 --- a/genesyscloud/data_source_genesyscloud_routing_email_domain.go +++ b/genesyscloud/data_source_genesyscloud_routing_email_domain.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // Returns the schema for the routing email domain diff --git a/genesyscloud/data_source_genesyscloud_routing_email_domain_test.go b/genesyscloud/data_source_genesyscloud_routing_email_domain_test.go index d594bdbf1..f155f18b3 100644 --- a/genesyscloud/data_source_genesyscloud_routing_email_domain_test.go +++ b/genesyscloud/data_source_genesyscloud_routing_email_domain_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccDataSourceRoutingEmailDomain(t *testing.T) { diff --git a/genesyscloud/data_source_genesyscloud_routing_language.go b/genesyscloud/data_source_genesyscloud_routing_language.go index 7edc21646..eeebd35e8 100644 --- a/genesyscloud/data_source_genesyscloud_routing_language.go +++ b/genesyscloud/data_source_genesyscloud_routing_language.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceRoutingLanguage() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_routing_language_test.go b/genesyscloud/data_source_genesyscloud_routing_language_test.go index 9d6eebb2a..018c1d2e9 100644 --- a/genesyscloud/data_source_genesyscloud_routing_language_test.go +++ b/genesyscloud/data_source_genesyscloud_routing_language_test.go @@ -21,6 +21,12 @@ func TestAccDataSourceRoutingLanguage(t *testing.T) { PreCheck: func() { util.TestAccPreCheck(t) }, ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), Steps: []resource.TestStep{ + { + Config: GenerateRoutingLanguageResource( + langResource, + langName, + ), + }, { Config: GenerateRoutingLanguageResource( langResource, diff --git a/genesyscloud/data_source_genesyscloud_routing_settings.go b/genesyscloud/data_source_genesyscloud_routing_settings.go deleted file mode 100644 index 31fe3528d..000000000 --- a/genesyscloud/data_source_genesyscloud_routing_settings.go +++ /dev/null @@ -1,45 +0,0 @@ -package genesyscloud - -import ( - "context" - "fmt" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" -) - -func dataSourceRoutingSettings() *schema.Resource { - return &schema.Resource{ - Description: "An organization's routing settings", - ReadContext: provider.ReadWithPooledClient(dataSourceRoutingSettingsRead), - SchemaVersion: 1, - Schema: ResourceRoutingSettings().Schema, - } -} - -func dataSourceRoutingSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - sdkConfig := m.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - settings, resp, getErr := routingAPI.GetRoutingSettings() - if getErr != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Error requesting routing settings error: %s", getErr), resp) - } - - d.SetId("datasource-settings") - if settings.ResetAgentScoreOnPresenceChange != nil { - d.Set("reset_agent_on_presence_change", *settings.ResetAgentScoreOnPresenceChange) - } - - if diagErr := readRoutingSettingsContactCenter(d, routingAPI); diagErr != nil { - return util.BuildDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Error reading routing settings contact center"), fmt.Errorf("%v", diagErr)) - } - - if diagErr := readRoutingSettingsTranscription(d, routingAPI); diagErr != nil { - return util.BuildDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Error reading routing settings transcription"), fmt.Errorf("%v", diagErr)) - } - - return nil -} diff --git a/genesyscloud/data_source_genesyscloud_routing_settings_test.go b/genesyscloud/data_source_genesyscloud_routing_settings_test.go deleted file mode 100644 index 29aa90b82..000000000 --- a/genesyscloud/data_source_genesyscloud_routing_settings_test.go +++ /dev/null @@ -1,65 +0,0 @@ -package genesyscloud - -import ( - "fmt" - "strings" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccDataSourceRoutingSettings(t *testing.T) { - var ( - settingsResource = "test-settings" - settingsDataSource = "test-settings-data" - transcription = "EnabledQueueFlow" - confidence = "1" - ) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), - Steps: []resource.TestStep{ - { - // Search by contact center - Config: generateRoutingSettingsWithCustomAttrs( - settingsResource, - util.TrueValue, - generateSettingsContactCenter(util.FalseValue), - generateSettingsTranscription(transcription, confidence, util.TrueValue, util.FalseValue), - ) + generateRoutingSettingsDataSource( - settingsDataSource, - util.TrueValue, - "genesyscloud_routing_settings."+settingsResource, - generateSettingsContactCenter(util.FalseValue), - generateSettingsTranscription(transcription, confidence, util.TrueValue, util.FalseValue), - ), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "reset_agent_on_presence", "genesyscloud_routing_settings."+settingsResource, "reset_agent_on_presence"), - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "contactcenter.remove_skills_from_blind_transfer", "genesyscloud_routing_settings."+settingsResource, "contactcenter.remove_skills_from_blind_transfer"), - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "transcription.0.transcription", "genesyscloud_routing_settings."+settingsResource, "transcription.0.transcription"), - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "transcription.0.transcription_confidence_threshold", "genesyscloud_routing_settings."+settingsResource, "transcription.0.transcription_confidence_threshold"), - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "transcription.0.low_latency_transcription_enabled", "genesyscloud_routing_settings."+settingsResource, "transcription.0.low_latency_transcription_enabled"), - resource.TestCheckResourceAttrPair("data.genesyscloud_routing_settings."+settingsDataSource, "transcription.0.content_search_enabled", "genesyscloud_routing_settings."+settingsResource, "transcription.0.content_search_enabled"), - ), - }, - }, - }) -} - -func generateRoutingSettingsDataSource( - resourceID string, - resetAgentScoreOnPresenceChange string, - // Must explicitly use depends_on in terraform v0.13 when a data source references a resource - // Fixed in v0.14 https://github.com/hashicorp/terraform/pull/26284 - dependsOnResource string, - attrs ...string) string { - return fmt.Sprintf(`data "genesyscloud_routing_settings" "%s" { - reset_agent_on_presence_change = %s - %s - depends_on=[%s] - } - `, resourceID, resetAgentScoreOnPresenceChange, strings.Join(attrs, "\n"), dependsOnResource) -} diff --git a/genesyscloud/data_source_genesyscloud_routing_skill.go b/genesyscloud/data_source_genesyscloud_routing_skill.go index b211fde38..22bdf02dd 100644 --- a/genesyscloud/data_source_genesyscloud_routing_skill.go +++ b/genesyscloud/data_source_genesyscloud_routing_skill.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // The context is now added without Timeout , diff --git a/genesyscloud/data_source_genesyscloud_routing_skill_group.go b/genesyscloud/data_source_genesyscloud_routing_skill_group.go index 5399cba09..5bb30ae14 100644 --- a/genesyscloud/data_source_genesyscloud_routing_skill_group.go +++ b/genesyscloud/data_source_genesyscloud_routing_skill_group.go @@ -2,18 +2,14 @@ package genesyscloud import ( "context" - "encoding/json" "fmt" - "net/http" + "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" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" ) func dataSourceRoutingSkillGroup() *schema.Resource { @@ -31,52 +27,74 @@ func dataSourceRoutingSkillGroup() *schema.Resource { } func dataSourceRoutingSkillGroupRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + var ( + resp *platformclientv2.APIResponse + err error + ) sdkConfig := m.(*provider.ProviderMeta).ClientConfig routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - name := d.Get("name").(string) - // Find first non-deleted skill by name. Retry in case new skill is not yet indexed by search - return util.WithRetries(ctx, 15*time.Second, func() *retry.RetryError { - for pageNum := 1; ; pageNum++ { - const pageSize = 100 + retryErr := util.WithRetries(ctx, 15*time.Second, func() *retry.RetryError { + var skillGroups []platformclientv2.Skillgroupdefinition + skillGroups, resp, err = getAllSkillGroupsByName(routingAPI, name) + if err != nil { + return retry.NonRetryableError(err) + } - apiClient := &routingAPI.Configuration.APIClient - path := routingAPI.Configuration.BasePath + "/api/v2/routing/skillgroups" + for _, skillGroup := range skillGroups { + if name == *skillGroup.Name { + d.SetId(*skillGroup.Id) + return nil + } + } - headerParams := buildHeaderParams(routingAPI) - response, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) + return retry.RetryableError(fmt.Errorf("failed to find skill group with name '%s'", name)) + }) - if err != nil { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("error encountered while trying to retrieve routing skills group found with name %s | error: %s", name, err), response)) - } + if retryErr != nil { + msg := fmt.Sprintf("failed to read skill group by name %s: %v", name, retryErr) + if resp != nil { + return util.BuildAPIDiagnosticError(getSkillGroupResourceName(), msg, resp) + } + return util.BuildDiagnosticError(getSkillGroupResourceName(), msg, fmt.Errorf("%v", retryErr)) + } - if err == nil && response.Error != nil { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("error encountered while trying to retrieve routing skills group found with name %s | error:%s", name, err), response)) - } - if err == nil && response.StatusCode == http.StatusNotFound { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("routing skills group not found with name %s", name), response)) - } + return nil +} - allSkillGroups := &AllSkillGroups{} +func getAllSkillGroupsByName(api *platformclientv2.RoutingApi, name string) ([]platformclientv2.Skillgroupdefinition, *platformclientv2.APIResponse, error) { + const pageSize = 100 + var ( + after string + allSkillGroups []platformclientv2.Skillgroupdefinition + ) + + for { + skillGroups, resp, err := api.GetRoutingSkillgroups(pageSize, name, after, "") + if err != nil { + return nil, resp, err + } - err = json.Unmarshal(response.RawBody, &allSkillGroups) - if err != nil { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("error encountered while trying to retrieve routing skills group found with name %s %s", name, err), response)) - } + if skillGroups.Entities == nil || len(*skillGroups.Entities) == 0 { + break + } - if allSkillGroups.Entities == nil || len(allSkillGroups.Entities) == 0 { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("no routing skills groups found with name %s", name), response)) - } + allSkillGroups = append(allSkillGroups, *skillGroups.Entities...) - for _, skillGroup := range allSkillGroups.Entities { - if skillGroup.Name == name { - d.SetId(skillGroup.ID) - return nil - } - } + if skillGroups.NextUri == nil || *skillGroups.NextUri == "" { + break } - }) + after, err = util.GetQueryParamValueFromUri(*skillGroups.NextUri, "after") + if err != nil { + return nil, nil, fmt.Errorf("error parsing NextUri '%s' while reading skill groups: %v", *skillGroups.NextUri, err) + } + if after == "" { + break + } + } + + return allSkillGroups, nil, nil } diff --git a/genesyscloud/data_source_genesyscloud_routing_skill_group_test.go b/genesyscloud/data_source_genesyscloud_routing_skill_group_test.go index a059ca33f..834da4175 100644 --- a/genesyscloud/data_source_genesyscloud_routing_skill_group_test.go +++ b/genesyscloud/data_source_genesyscloud_routing_skill_group_test.go @@ -47,9 +47,9 @@ func generateRoutingSkillGroupDataSource( // Must explicitly use depends_on in terraform v0.13 when a data source references a resource // Fixed in v0.14 https://github.com/hashicorp/terraform/pull/26284 dependsOnResource string) string { - return fmt.Sprintf(`data "genesyscloud_routing_skill_group" "%s" { + return fmt.Sprintf(`data "%s" "%s" { name = %s depends_on=[%s] } - `, resourceID, name, dependsOnResource) + `, getSkillGroupResourceName(), resourceID, name, dependsOnResource) } diff --git a/genesyscloud/data_source_genesyscloud_routing_utilization_label.go b/genesyscloud/data_source_genesyscloud_routing_utilization_label.go deleted file mode 100644 index 8c9581020..000000000 --- a/genesyscloud/data_source_genesyscloud_routing_utilization_label.go +++ /dev/null @@ -1,53 +0,0 @@ -package genesyscloud - -import ( - "context" - "fmt" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" -) - -func dataSourceRoutingUtilizationLabel() *schema.Resource { - return &schema.Resource{ - Description: "Data source for Genesys Cloud Routing Utilization Labels. Select a label by name.", - ReadContext: provider.ReadWithPooledClient(dataSourceRoutingUtilizationLabelRead), - Schema: map[string]*schema.Schema{ - "name": { - Description: "Label name.", - Type: schema.TypeString, - ValidateFunc: validation.StringDoesNotContainAny("*"), - Required: true, - }, - }, - } -} - -func dataSourceRoutingUtilizationLabelRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - sdkConfig := m.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - name := d.Get("name").(string) - - return util.WithRetries(ctx, 15*time.Second, func() *retry.RetryError { - labels, resp, getErr := routingAPI.GetRoutingUtilizationLabels(1, 1, "", name) - if getErr != nil { - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Error requesting label %s | error: %s", name, getErr), resp)) - } - - if labels.Entities == nil || len(*labels.Entities) == 0 { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("No labels found with name %s", name), resp)) - } - - label := (*labels.Entities)[0] - d.SetId(*label.Id) - return nil - }) -} diff --git a/genesyscloud/data_source_genesyscloud_routing_wrapupcode.go b/genesyscloud/data_source_genesyscloud_routing_wrapupcode.go index 5596473d3..33d96f72b 100644 --- a/genesyscloud/data_source_genesyscloud_routing_wrapupcode.go +++ b/genesyscloud/data_source_genesyscloud_routing_wrapupcode.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceRoutingWrapupcode() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_user.go b/genesyscloud/data_source_genesyscloud_user.go index b74a5b487..42ce5df10 100644 --- a/genesyscloud/data_source_genesyscloud_user.go +++ b/genesyscloud/data_source_genesyscloud_user.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceUser() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_widget_deployment.go b/genesyscloud/data_source_genesyscloud_widget_deployment.go index 89892889f..31b04b4de 100644 --- a/genesyscloud/data_source_genesyscloud_widget_deployment.go +++ b/genesyscloud/data_source_genesyscloud_widget_deployment.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceWidgetDeployments() *schema.Resource { diff --git a/genesyscloud/data_source_genesyscloud_widget_deployment_test.go b/genesyscloud/data_source_genesyscloud_widget_deployment_test.go index 4d9b77b2d..ce1ce1b6d 100644 --- a/genesyscloud/data_source_genesyscloud_widget_deployment_test.go +++ b/genesyscloud/data_source_genesyscloud_widget_deployment_test.go @@ -2,6 +2,7 @@ package genesyscloud import ( "fmt" + "strconv" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" "testing" @@ -16,23 +17,18 @@ func TestAccDataSourceWidgetDeployment(t *testing.T) { widgetDeploymentsDataSource = "widget-deployments-data" widgetDeploymentsName = "Widget_deployments-" ) - + description := "This is a test description" + flowId := uuid.NewString() widgetDeployV1 := &widgetDeploymentConfig{ resourceID: widgegetDeploymentsResource, - name: widgetDeploymentsName + uuid.NewString(), - description: "This is a test description", - flowID: uuid.NewString(), - clientType: "v1", + name: widgetDeploymentsName, + description: strconv.Quote(description), + flowID: strconv.Quote(flowId), + clientType: V2, authenticationRequired: "true", disabled: "true", - webChatSkin: "basic", - authenticationUrl: "https://localhost", } - _, err := provider.AuthorizeSdk() - if err != nil { - t.Fatal(err) - } deleteWidgetDeploymentWithName(widgetDeploymentsName) resource.Test(t, resource.TestCase{ @@ -40,7 +36,7 @@ func TestAccDataSourceWidgetDeployment(t *testing.T) { ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), Steps: []resource.TestStep{ { - Config: generateWidgetDeployV1(widgetDeployV1) + generateWidgetDeploymentDataSource(widgetDeploymentsDataSource, "genesyscloud_widget_deployment."+widgegetDeploymentsResource+".name", "genesyscloud_widget_deployment."+widgegetDeploymentsResource), + Config: generateWidgetDeploymentResource(widgetDeployV1) + generateWidgetDeploymentDataSource(widgetDeploymentsDataSource, "genesyscloud_widget_deployment."+widgegetDeploymentsResource+".name", "genesyscloud_widget_deployment."+widgegetDeploymentsResource), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair("data.genesyscloud_widget_deployment."+widgetDeploymentsDataSource, "id", "genesyscloud_widget_deployment."+widgegetDeploymentsResource, "id"), ), diff --git a/genesyscloud/dependent_consumers/genesyscloud_dependent_consumer_proxy.go b/genesyscloud/dependent_consumers/genesyscloud_dependent_consumer_proxy.go index 4c4311112..1b806376d 100644 --- a/genesyscloud/dependent_consumers/genesyscloud_dependent_consumer_proxy.go +++ b/genesyscloud/dependent_consumers/genesyscloud_dependent_consumer_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/employeeperformance_externalmetrics_definitions/genesyscloud_employeeperformance_externalmetrics_definitions_proxy.go b/genesyscloud/employeeperformance_externalmetrics_definitions/genesyscloud_employeeperformance_externalmetrics_definitions_proxy.go index b252235c5..4f123630e 100644 --- a/genesyscloud/employeeperformance_externalmetrics_definitions/genesyscloud_employeeperformance_externalmetrics_definitions_proxy.go +++ b/genesyscloud/employeeperformance_externalmetrics_definitions/genesyscloud_employeeperformance_externalmetrics_definitions_proxy.go @@ -3,7 +3,7 @@ package employeeperformance_externalmetrics_definitions import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions.go b/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions.go index 3b443b79d..f8ff2b8c8 100644 --- a/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions.go +++ b/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions_test.go b/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions_test.go index a543c81f1..105eb00e5 100644 --- a/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions_test.go +++ b/genesyscloud/employeeperformance_externalmetrics_definitions/resource_genesyscloud_employeeperformance_externalmetrics_definitions_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceEmployeePerformanceExternalMetricsDefintions(t *testing.T) { diff --git a/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_init_test.go b/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_init_test.go index 36de1b179..1e1c09f66 100644 --- a/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_init_test.go +++ b/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_init_test.go @@ -39,7 +39,6 @@ func (r *registerTestInstance) registerTestDataSources() { defer r.datasourceMapMutex.Unlock() providerDataSources["genesyscloud_externalcontacts_contact"] = DataSourceExternalContactsContact() - } // initTestResources initializes all test resources and data sources. diff --git a/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_proxy.go b/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_proxy.go index 44b582603..f624411ce 100644 --- a/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_proxy.go +++ b/genesyscloud/external_contacts/genesyscloud_externalcontacts_contact_proxy.go @@ -5,7 +5,9 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -50,14 +52,17 @@ type externalContactsContactsProxy struct { getExternalContactByIdAttr getExternalContactByIdFunc getExternalContactIdBySearchAttr getExternalContactIdBySearchFunc updateExternalContactAttr updateExternalContactFunc + externalContactsCache rc.CacheInterface[platformclientv2.Externalcontact] } // newExternalContactsContactsProxy initializes the External Contacts proxy with all of the data needed to communicate with Genesys Cloud func newExternalContactsContactsProxy(clientConfig *platformclientv2.Configuration) *externalContactsContactsProxy { api := platformclientv2.NewExternalContactsApiWithConfig(clientConfig) + externalContactsCache := rc.NewResourceCache[platformclientv2.Externalcontact]() return &externalContactsContactsProxy{ clientConfig: clientConfig, externalContactsApi: api, + externalContactsCache: externalContactsCache, getAllExternalContactsAttr: getAllExternalContactsFn, createExternalContactAttr: createExternalContactFn, getExternalContactByIdAttr: getExternalContactByIdFn, @@ -93,6 +98,9 @@ func (p *externalContactsContactsProxy) deleteExternalContactId(ctx context.Cont // getExternalContactById returns a single Genesys Cloud External Contact by Id func (p *externalContactsContactsProxy) getExternalContactById(ctx context.Context, externalContactId string) (*platformclientv2.Externalcontact, *platformclientv2.APIResponse, error) { + if externalContacts := rc.GetCacheItem(p.externalContactsCache, externalContactId); externalContacts != nil { // Get the Externalcontact from the cache, if not there in the cache then call p.getExternalContactByIdAttr() + return externalContacts, nil, nil + } return p.getExternalContactByIdAttr(ctx, p, externalContactId) } @@ -130,6 +138,12 @@ func getAllExternalContactsFn(ctx context.Context, p *externalContactsContactsPr } cursor = *externalContacts.Cursors.After } + + // Cache the External Contacts resource into the p.externalContactsCache for later use + for _, externalContact := range allExternalContacts { + rc.SetCache(p.externalContactsCache, *externalContact.Id, externalContact) + } + return &allExternalContacts, response, nil } diff --git a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact.go b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact.go index bdc3722ae..98565b2ea 100644 --- a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact.go +++ b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_schema.go b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_schema.go index 6e56d6f0e..2b9ff630b 100644 --- a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_schema.go +++ b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_schema.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) /* @@ -53,7 +53,7 @@ func ResourceExternalContact() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, "country_code": { Description: "Phone number country code.", @@ -95,7 +95,7 @@ func ResourceExternalContact() *schema.Resource { Description: "Contact address country code.", Type: schema.TypeString, Optional: true, - ValidateDiagFunc: gcloud.ValidateCountryCode, + ValidateDiagFunc: validators.ValidateCountryCode, }, }, } diff --git a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_test.go b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_test.go index e299b2146..bf6c6c2b0 100644 --- a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_test.go +++ b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_test.go @@ -8,7 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_utils.go b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_utils.go index b6b864bb4..d7b3df901 100644 --- a/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_utils.go +++ b/genesyscloud/external_contacts/resource_genesyscloud_externalcontacts_contact_utils.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/nyaruka/phonenumbers" ) diff --git a/genesyscloud/flow_loglevel/genesyscloud_flow_loglevel_proxy.go b/genesyscloud/flow_loglevel/genesyscloud_flow_loglevel_proxy.go index abcef0774..34437c34a 100644 --- a/genesyscloud/flow_loglevel/genesyscloud_flow_loglevel_proxy.go +++ b/genesyscloud/flow_loglevel/genesyscloud_flow_loglevel_proxy.go @@ -3,7 +3,7 @@ package flow_loglevel import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel.go b/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel.go index f993f67b5..0100e60ae 100644 --- a/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel.go +++ b/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel_test.go b/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel_test.go index bddec6ed3..acbf5cd6f 100644 --- a/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel_test.go +++ b/genesyscloud/flow_loglevel/resource_genesyscloud_flow_loglevel_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/architect_flow" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" diff --git a/genesyscloud/flow_milestone/genesyscloud_flow_milestone_proxy.go b/genesyscloud/flow_milestone/genesyscloud_flow_milestone_proxy.go index 104daebed..932a45cc7 100644 --- a/genesyscloud/flow_milestone/genesyscloud_flow_milestone_proxy.go +++ b/genesyscloud/flow_milestone/genesyscloud_flow_milestone_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone.go b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone.go index fed202ea8..b83780b75 100644 --- a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone.go +++ b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_test.go b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_test.go index 3d7da7915..2f26afbd0 100644 --- a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_test.go +++ b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceFlowMilestone(t *testing.T) { diff --git a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_utils.go b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_utils.go index 838a056c6..46b801e53 100644 --- a/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_utils.go +++ b/genesyscloud/flow_milestone/resource_genesyscloud_flow_milestone_utils.go @@ -2,7 +2,7 @@ package flow_milestone import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/flow_outcome/genesyscloud_flow_outcome_proxy.go b/genesyscloud/flow_outcome/genesyscloud_flow_outcome_proxy.go index 6bbe109d7..4aa3507bc 100644 --- a/genesyscloud/flow_outcome/genesyscloud_flow_outcome_proxy.go +++ b/genesyscloud/flow_outcome/genesyscloud_flow_outcome_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome.go b/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome.go index 4fbb0dc8a..b36bf8781 100644 --- a/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome.go +++ b/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome_utils.go b/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome_utils.go index eb0cc2e39..efde6651e 100644 --- a/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome_utils.go +++ b/genesyscloud/flow_outcome/resource_genesyscloud_flow_outcome_utils.go @@ -2,7 +2,7 @@ package flow_outcome import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/group/data_source_genesyscloud_group_test.go b/genesyscloud/group/data_source_genesyscloud_group_test.go index f6bbb0f6b..f69c4f037 100644 --- a/genesyscloud/group/data_source_genesyscloud_group_test.go +++ b/genesyscloud/group/data_source_genesyscloud_group_test.go @@ -10,7 +10,7 @@ import ( "time" "github.com/google/uuid" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" diff --git a/genesyscloud/group/genesyscloud_group_proxy.go b/genesyscloud/group/genesyscloud_group_proxy.go index 951d367b7..956ba6d43 100644 --- a/genesyscloud/group/genesyscloud_group_proxy.go +++ b/genesyscloud/group/genesyscloud_group_proxy.go @@ -3,7 +3,7 @@ package group import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" ) diff --git a/genesyscloud/group/resource_genesyscloud_group.go b/genesyscloud/group/resource_genesyscloud_group.go index 4792060d1..60faa5abc 100644 --- a/genesyscloud/group/resource_genesyscloud_group.go +++ b/genesyscloud/group/resource_genesyscloud_group.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func GetAllGroups(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/group/resource_genesyscloud_group_test.go b/genesyscloud/group/resource_genesyscloud_group_test.go index 930dc3d9a..f9658b391 100644 --- a/genesyscloud/group/resource_genesyscloud_group_test.go +++ b/genesyscloud/group/resource_genesyscloud_group_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceGroupBasic(t *testing.T) { diff --git a/genesyscloud/group/resource_genesyscloud_group_utils.go b/genesyscloud/group/resource_genesyscloud_group_utils.go index 4bf5d2ebe..b7b5652fe 100644 --- a/genesyscloud/group/resource_genesyscloud_group_utils.go +++ b/genesyscloud/group/resource_genesyscloud_group_utils.go @@ -3,7 +3,7 @@ package group import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "strings" "terraform-provider-genesyscloud/genesyscloud/util" diff --git a/genesyscloud/group_roles/genesyscloud_group_roles_proxy.go b/genesyscloud/group_roles/genesyscloud_group_roles_proxy.go index 0cb0c84b7..87cb8703e 100644 --- a/genesyscloud/group_roles/genesyscloud_group_roles_proxy.go +++ b/genesyscloud/group_roles/genesyscloud_group_roles_proxy.go @@ -7,7 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *groupRolesProxy diff --git a/genesyscloud/group_roles/resource_genesyscloud_group_roles_schema.go b/genesyscloud/group_roles/resource_genesyscloud_group_roles_schema.go index c8138ae07..7adf536f1 100644 --- a/genesyscloud/group_roles/resource_genesyscloud_group_roles_schema.go +++ b/genesyscloud/group_roles/resource_genesyscloud_group_roles_schema.go @@ -7,7 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" diff --git a/genesyscloud/group_roles/resource_genesyscloud_group_roles_utils.go b/genesyscloud/group_roles/resource_genesyscloud_group_roles_utils.go index 71d165e5e..d1ecb34c9 100644 --- a/genesyscloud/group_roles/resource_genesyscloud_group_roles_utils.go +++ b/genesyscloud/group_roles/resource_genesyscloud_group_roles_utils.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func flattenSubjectRoles(d *schema.ResourceData, p *groupRolesProxy) (*schema.Set, *platformclientv2.APIResponse, error) { diff --git a/genesyscloud/idp_adfs/genesyscloud_idp_adfs_proxy.go b/genesyscloud/idp_adfs/genesyscloud_idp_adfs_proxy.go index 23910c006..a1825f1c1 100644 --- a/genesyscloud/idp_adfs/genesyscloud_idp_adfs_proxy.go +++ b/genesyscloud/idp_adfs/genesyscloud_idp_adfs_proxy.go @@ -3,7 +3,7 @@ package idp_adfs import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs.go b/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs.go index 1367be58b..cde86dead 100644 --- a/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs.go +++ b/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs_test.go b/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs_test.go index 5b8cc3391..ef089ab46 100644 --- a/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs_test.go +++ b/genesyscloud/idp_adfs/resource_genesyscloud_idp_adfs_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpAdfs(t *testing.T) { diff --git a/genesyscloud/idp_okta/genesyscloud_idp_okta_proxy.go b/genesyscloud/idp_okta/genesyscloud_idp_okta_proxy.go index d40d622d0..1af69517d 100644 --- a/genesyscloud/idp_okta/genesyscloud_idp_okta_proxy.go +++ b/genesyscloud/idp_okta/genesyscloud_idp_okta_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/idp_okta/resource_genesyscloud_idp_okta.go b/genesyscloud/idp_okta/resource_genesyscloud_idp_okta.go index 2925dbc85..7f0de2a14 100644 --- a/genesyscloud/idp_okta/resource_genesyscloud_idp_okta.go +++ b/genesyscloud/idp_okta/resource_genesyscloud_idp_okta.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/constants" "terraform-provider-genesyscloud/genesyscloud/util/lists" diff --git a/genesyscloud/idp_okta/resource_genesyscloud_idp_okta_test.go b/genesyscloud/idp_okta/resource_genesyscloud_idp_okta_test.go index 547eee8b3..3b2e770aa 100644 --- a/genesyscloud/idp_okta/resource_genesyscloud_idp_okta_test.go +++ b/genesyscloud/idp_okta/resource_genesyscloud_idp_okta_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpOkta(t *testing.T) { diff --git a/genesyscloud/idp_salesforce/genesyscloud_idp_salesforce_proxy.go b/genesyscloud/idp_salesforce/genesyscloud_idp_salesforce_proxy.go index 3af3972b0..0610597c8 100644 --- a/genesyscloud/idp_salesforce/genesyscloud_idp_salesforce_proxy.go +++ b/genesyscloud/idp_salesforce/genesyscloud_idp_salesforce_proxy.go @@ -2,7 +2,7 @@ package idp_salesforce import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce.go b/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce.go index f8ba2f919..eadc684c1 100644 --- a/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce.go +++ b/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce_test.go b/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce_test.go index 431890348..d891e5601 100644 --- a/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce_test.go +++ b/genesyscloud/idp_salesforce/resource_genesyscloud_idp_salesforce_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpSalesforce(t *testing.T) { diff --git a/genesyscloud/integration/genesyscloud_integration_proxy.go b/genesyscloud/integration/genesyscloud_integration_proxy.go index 571526332..5f40e21a4 100644 --- a/genesyscloud/integration/genesyscloud_integration_proxy.go +++ b/genesyscloud/integration/genesyscloud_integration_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration/resource_genesyscloud_integration.go b/genesyscloud/integration/resource_genesyscloud_integration.go index cfcf214fb..d164f75a6 100644 --- a/genesyscloud/integration/resource_genesyscloud_integration.go +++ b/genesyscloud/integration/resource_genesyscloud_integration.go @@ -16,7 +16,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration/resource_genesyscloud_integration_test.go b/genesyscloud/integration/resource_genesyscloud_integration_test.go index b0474efb2..4f0476236 100644 --- a/genesyscloud/integration/resource_genesyscloud_integration_test.go +++ b/genesyscloud/integration/resource_genesyscloud_integration_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -266,7 +266,9 @@ func TestAccResourceIntegration(t *testing.T) { strconv.Quote(credName1), strconv.Quote(credTypeName1), integrationCred.GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), + map[string]string{ + key1: strconv.Quote(val1), + }, ), ) + GenerateIntegrationResource( inteResource2, @@ -297,7 +299,9 @@ func TestAccResourceIntegration(t *testing.T) { strconv.Quote(credName1), strconv.Quote(credTypeName1), integrationCred.GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), + map[string]string{ + key1: strconv.Quote(val1), + }, ), ) + GenerateIntegrationResource( inteResource2, diff --git a/genesyscloud/integration/resource_genesyscloud_integration_utils.go b/genesyscloud/integration/resource_genesyscloud_integration_utils.go index 5fbe82c6e..b28c17d00 100644 --- a/genesyscloud/integration/resource_genesyscloud_integration_utils.go +++ b/genesyscloud/integration/resource_genesyscloud_integration_utils.go @@ -10,7 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_action/genesyscloud_integration_action_proxy.go b/genesyscloud/integration_action/genesyscloud_integration_action_proxy.go index 1b963ef3e..bc7f7591a 100644 --- a/genesyscloud/integration_action/genesyscloud_integration_action_proxy.go +++ b/genesyscloud/integration_action/genesyscloud_integration_action_proxy.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "errors" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "net/http" ) diff --git a/genesyscloud/integration_action/resource_genesyscloud_integration_action.go b/genesyscloud/integration_action/resource_genesyscloud_integration_action.go index b0da5cf21..b2d9139c9 100644 --- a/genesyscloud/integration_action/resource_genesyscloud_integration_action.go +++ b/genesyscloud/integration_action/resource_genesyscloud_integration_action.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_action/resource_genesyscloud_integration_action_test.go b/genesyscloud/integration_action/resource_genesyscloud_integration_action_test.go index d3d588764..24fe588ff 100644 --- a/genesyscloud/integration_action/resource_genesyscloud_integration_action_test.go +++ b/genesyscloud/integration_action/resource_genesyscloud_integration_action_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -114,20 +114,26 @@ func TestAccResourceIntegrationAction(t *testing.T) { reqUrlTemplate2, reqType2, strconv.Quote(reqTemp), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "headers", - util.GenerateMapProperty(headerKey, strconv.Quote(headerVal1)), + map[string]string{ + headerKey: strconv.Quote(headerVal1), + }, ), ), generateIntegrationActionConfigResponse( strconv.Quote(successTemplate), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "translation_map", - util.GenerateMapProperty(transMapAttr, strconv.Quote(transMapVal1)), + map[string]string{ + transMapAttr: strconv.Quote(transMapVal1), + }, ), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "translation_map_defaults", - util.GenerateMapProperty(transMapAttr, strconv.Quote(transMapValDefault1)), + map[string]string{ + transMapAttr: strconv.Quote(transMapValDefault1), + }, ), ), ), @@ -165,20 +171,26 @@ func TestAccResourceIntegrationAction(t *testing.T) { reqUrlTemplate2, reqType2, strconv.Quote(reqTemp), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "headers", - util.GenerateMapProperty(headerKey, strconv.Quote(headerVal2)), + map[string]string{ + headerKey: strconv.Quote(headerVal2), + }, ), ), generateIntegrationActionConfigResponse( strconv.Quote(successTemplate), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "translation_map", - util.GenerateMapProperty(transMapAttr, strconv.Quote(transMapVal2)), + map[string]string{ + transMapAttr: strconv.Quote(transMapVal2), + }, ), - util.GenerateMapAttr( + util.GenerateMapAttrWithMapProperties( "translation_map_defaults", - util.GenerateMapProperty(transMapAttr, strconv.Quote(transMapValDefault2)), + map[string]string{ + transMapAttr: strconv.Quote(transMapValDefault2), + }, ), ), ), diff --git a/genesyscloud/integration_action/resource_genesyscloud_integration_action_utils.go b/genesyscloud/integration_action/resource_genesyscloud_integration_action_utils.go index 23120db0c..f74621600 100644 --- a/genesyscloud/integration_action/resource_genesyscloud_integration_action_utils.go +++ b/genesyscloud/integration_action/resource_genesyscloud_integration_action_utils.go @@ -7,7 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" ) diff --git a/genesyscloud/integration_credential/data_source_genesyscloud_integration_credential_test.go b/genesyscloud/integration_credential/data_source_genesyscloud_integration_credential_test.go index 4bf17ec65..a96945459 100644 --- a/genesyscloud/integration_credential/data_source_genesyscloud_integration_credential_test.go +++ b/genesyscloud/integration_credential/data_source_genesyscloud_integration_credential_test.go @@ -35,7 +35,9 @@ func TestAccDataSourceIntegrationCredential(t *testing.T) { strconv.Quote(credName1), strconv.Quote(typeName1), GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), + map[string]string{ + key1: strconv.Quote(val1), + }, ), ) + generateIntegrationCredentialDataSource(credResource2, credName1, diff --git a/genesyscloud/integration_credential/genesyscloud_integration_credential_proxy.go b/genesyscloud/integration_credential/genesyscloud_integration_credential_proxy.go index dd1c2336b..31f0da8df 100644 --- a/genesyscloud/integration_credential/genesyscloud_integration_credential_proxy.go +++ b/genesyscloud/integration_credential/genesyscloud_integration_credential_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential.go b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential.go index d995c6766..e82c6ca79 100644 --- a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential.go +++ b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_test.go b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_test.go index c90454fbe..f401541ac 100644 --- a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_test.go +++ b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -49,7 +49,9 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName1), strconv.Quote(typeName1), GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), + map[string]string{ + key1: strconv.Quote(val1), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -65,7 +67,9 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName2), strconv.Quote(typeName1), GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1_2)), + map[string]string{ + key1: strconv.Quote(val1_2), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -81,8 +85,10 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName2), strconv.Quote(typeName1), GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), - util.GenerateMapProperty(key2, strconv.Quote(val2)), + map[string]string{ + key1: strconv.Quote(val1), + key2: strconv.Quote(val2), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -99,8 +105,10 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName2), strconv.Quote(typeName1), GenerateCredentialFields( - util.GenerateMapProperty(key1, strconv.Quote(val1)), - util.GenerateMapProperty(key2, strconv.Quote(val2_2)), + map[string]string{ + key1: strconv.Quote(val1), + key2: strconv.Quote(val2_2), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -124,7 +132,9 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName1), strconv.Quote(typeName2), GenerateCredentialFields( - util.GenerateMapProperty(key3, strconv.Quote(val3)), + map[string]string{ + key3: strconv.Quote(val3), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -140,7 +150,9 @@ func TestAccResourceCredential(t *testing.T) { strconv.Quote(credName2), strconv.Quote(typeName2), GenerateCredentialFields( - util.GenerateMapProperty(key3, strconv.Quote(val3)), + map[string]string{ + key3: strconv.Quote(val3), + }, ), ), Check: resource.ComposeTestCheckFunc( @@ -213,8 +225,10 @@ func TestAccGenesysCloudOAuthResourceCredentialWithSecret(t *testing.T) { strconv.Quote(credName), strconv.Quote(typeName), GenerateCredentialFields( - util.GenerateMapProperty("clientId", strconv.Quote(clientId)), - util.GenerateMapProperty("clientSecret", strconv.Quote(clientSecret)), + map[string]string{ + "clientId": strconv.Quote(clientId), + "clientSecret": strconv.Quote(clientSecret), + }, ), ), Check: resource.ComposeTestCheckFunc( diff --git a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_utils.go b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_utils.go index 83269582e..869ecf396 100644 --- a/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_utils.go +++ b/genesyscloud/integration_credential/resource_genesyscloud_integration_credential_utils.go @@ -37,6 +37,6 @@ func GenerateCredentialResource(resourceID string, name string, credentialType s } // GenerateCredentialFields builds a terraform string for multiple credential fields -func GenerateCredentialFields(fields ...string) string { - return util.GenerateMapAttr("fields", fields...) +func GenerateCredentialFields(fields map[string]string) string { + return util.GenerateMapAttrWithMapProperties("fields", fields) } diff --git a/genesyscloud/integration_custom_auth_action/data_source_genesyscloud_integration_custom_auth_action_test.go b/genesyscloud/integration_custom_auth_action/data_source_genesyscloud_integration_custom_auth_action_test.go index c305ebb95..24c183ef2 100644 --- a/genesyscloud/integration_custom_auth_action/data_source_genesyscloud_integration_custom_auth_action_test.go +++ b/genesyscloud/integration_custom_auth_action/data_source_genesyscloud_integration_custom_auth_action_test.go @@ -31,7 +31,7 @@ func TestAccDataSourceIntegrationCustomAuthAction(t *testing.T) { strconv.Quote(credentialResourceName), strconv.Quote(customAuthCredentialType), integrationCred.GenerateCredentialFields( - util.GenerateMapProperty(credKey1, strconv.Quote(credVal1)), + map[string]string{credKey1: strconv.Quote(credVal1)}, ), ) diff --git a/genesyscloud/integration_custom_auth_action/genesyscloud_integration_custom_auth_action_proxy.go b/genesyscloud/integration_custom_auth_action/genesyscloud_integration_custom_auth_action_proxy.go index 9d70ccc8b..dda4e4553 100644 --- a/genesyscloud/integration_custom_auth_action/genesyscloud_integration_custom_auth_action_proxy.go +++ b/genesyscloud/integration_custom_auth_action/genesyscloud_integration_custom_auth_action_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action.go b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action.go index 3ae2db2df..8839fee9b 100644 --- a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action.go +++ b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_test.go b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_test.go index 193ef3266..3d2e51163 100644 --- a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_test.go +++ b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_test.go @@ -15,7 +15,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type customAuthActionResource struct { @@ -54,7 +54,9 @@ func TestAccResourceIntegrationCustomAuthAction(t *testing.T) { strconv.Quote(credentialResourceName), strconv.Quote(customAuthCredentialType), integrationCred.GenerateCredentialFields( - util.GenerateMapProperty(credKey1, strconv.Quote(credVal1)), + map[string]string{ + credKey1: strconv.Quote(credVal1), + }, ), ) diff --git a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_utils.go b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_utils.go index 2632161aa..209c4e24d 100644 --- a/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_utils.go +++ b/genesyscloud/integration_custom_auth_action/resource_genesyscloud_integration_custom_auth_action_utils.go @@ -6,7 +6,7 @@ import ( integrationAction "terraform-provider-genesyscloud/genesyscloud/integration_action" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/journey_outcome_predictor/genesyscloud_journey_outcome_predictor_proxy.go b/genesyscloud/journey_outcome_predictor/genesyscloud_journey_outcome_predictor_proxy.go index cdbdc6b6c..e5846292b 100644 --- a/genesyscloud/journey_outcome_predictor/genesyscloud_journey_outcome_predictor_proxy.go +++ b/genesyscloud/journey_outcome_predictor/genesyscloud_journey_outcome_predictor_proxy.go @@ -2,7 +2,7 @@ package journey_outcome_predictor import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor.go b/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor.go index 381edb23f..cda54b354 100644 --- a/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor.go +++ b/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor_test.go b/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor_test.go index 3db246089..98872d160 100644 --- a/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor_test.go +++ b/genesyscloud/journey_outcome_predictor/resource_genesyscloud_journey_outcome_predictor_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceJourneyOutcomePredictor(t *testing.T) { diff --git a/genesyscloud/journey_views/genesyscloud_journey_views_proxy.go b/genesyscloud/journey_views/genesyscloud_journey_views_proxy.go index 929ddd59d..4964990b3 100644 --- a/genesyscloud/journey_views/genesyscloud_journey_views_proxy.go +++ b/genesyscloud/journey_views/genesyscloud_journey_views_proxy.go @@ -2,7 +2,7 @@ package journey_views import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" ) diff --git a/genesyscloud/journey_views/resource_genesyscloud_journey_views.go b/genesyscloud/journey_views/resource_genesyscloud_journey_views.go index 525f8b15f..2d6b4f702 100644 --- a/genesyscloud/journey_views/resource_genesyscloud_journey_views.go +++ b/genesyscloud/journey_views/resource_genesyscloud_journey_views.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" @@ -65,7 +65,7 @@ func readJourneyView(ctx context.Context, d *schema.ResourceData, meta interface } return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to get journeyView with viewId %s | error: %s", viewId, err), resp)) } - + resourcedata.SetNillableValue(d, "name", journeyView.Name) resourcedata.SetNillableValue(d, "description", journeyView.Description) resourcedata.SetNillableValue(d, "interval", journeyView.Interval) diff --git a/genesyscloud/journey_views/resource_genesyscloud_journey_views_test.go b/genesyscloud/journey_views/resource_genesyscloud_journey_views_test.go index 5d2153764..8116ced64 100644 --- a/genesyscloud/journey_views/resource_genesyscloud_journey_views_test.go +++ b/genesyscloud/journey_views/resource_genesyscloud_journey_views_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" diff --git a/genesyscloud/journey_views/resource_genesyscloud_journey_views_utils.go b/genesyscloud/journey_views/resource_genesyscloud_journey_views_utils.go index 2f6dc4691..7c8254f7d 100644 --- a/genesyscloud/journey_views/resource_genesyscloud_journey_views_utils.go +++ b/genesyscloud/journey_views/resource_genesyscloud_journey_views_utils.go @@ -3,7 +3,7 @@ package journey_views import ( "errors" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" ) diff --git a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client.go b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client.go index 1517a4592..851bf78cc 100644 --- a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client.go +++ b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllOAuthClients(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_proxy.go b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_proxy.go index deda69802..f4b0416f6 100644 --- a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_proxy.go +++ b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_proxy.go @@ -5,7 +5,7 @@ import ( "log" "sync" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *oauthClientProxy diff --git a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_utils.go b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_utils.go index eebfceade..dcdacc228 100644 --- a/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_utils.go +++ b/genesyscloud/oauth_client/resource_genesyscloud_oauth_client_utils.go @@ -6,7 +6,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildOAuthRedirectURIs(d *schema.ResourceData) *[]string { diff --git a/genesyscloud/oauth_client/resource_genesyscloude_oauth_client_unit_test.go b/genesyscloud/oauth_client/resource_genesyscloude_oauth_client_unit_test.go index 531108b05..2f8b9e9fb 100644 --- a/genesyscloud/oauth_client/resource_genesyscloude_oauth_client_unit_test.go +++ b/genesyscloud/oauth_client/resource_genesyscloude_oauth_client_unit_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/organization_authentication_settings/genesyscloud_organization_authentication_settings_proxy.go b/genesyscloud/organization_authentication_settings/genesyscloud_organization_authentication_settings_proxy.go index 980274ccf..bd316f7db 100644 --- a/genesyscloud/organization_authentication_settings/genesyscloud_organization_authentication_settings_proxy.go +++ b/genesyscloud/organization_authentication_settings/genesyscloud_organization_authentication_settings_proxy.go @@ -3,7 +3,7 @@ package organization_authentication_settings import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings.go b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings.go index 5907f7216..00e0e5f2f 100644 --- a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings.go +++ b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_unit_test.go b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_unit_test.go index 55e472c64..2d65d7a8b 100644 --- a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_unit_test.go +++ b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_unit_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "net/http" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_utils.go b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_utils.go index 23652caf4..d981238fd 100644 --- a/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_utils.go +++ b/genesyscloud/organization_authentication_settings/resource_genesyscloud_organization_authentication_settings_utils.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/orgauthorization_pairing/genesyscloud_orgauthorization_pairing_proxy.go b/genesyscloud/orgauthorization_pairing/genesyscloud_orgauthorization_pairing_proxy.go index d2e7f36e1..5cfb68125 100644 --- a/genesyscloud/orgauthorization_pairing/genesyscloud_orgauthorization_pairing_proxy.go +++ b/genesyscloud/orgauthorization_pairing/genesyscloud_orgauthorization_pairing_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *orgauthorizationPairingProxy diff --git a/genesyscloud/orgauthorization_pairing/resource_genesyscloud_orgauthorization_pairing.go b/genesyscloud/orgauthorization_pairing/resource_genesyscloud_orgauthorization_pairing.go index dc4e4ba74..5f4bc6923 100644 --- a/genesyscloud/orgauthorization_pairing/resource_genesyscloud_orgauthorization_pairing.go +++ b/genesyscloud/orgauthorization_pairing/resource_genesyscloud_orgauthorization_pairing.go @@ -15,7 +15,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func createOrgauthorizationPairing(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { diff --git a/genesyscloud/outbound/data_source_genesyscloud_outbound_cattemptlimit.go b/genesyscloud/outbound/data_source_genesyscloud_outbound_cattemptlimit.go index 351f72353..25a84f122 100644 --- a/genesyscloud/outbound/data_source_genesyscloud_outbound_cattemptlimit.go +++ b/genesyscloud/outbound/data_source_genesyscloud_outbound_cattemptlimit.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceOutboundAttemptLimit() *schema.Resource { diff --git a/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign.go b/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign.go index b7793f2e1..391bbdbf2 100644 --- a/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign.go +++ b/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceOutboundMessagingcampaign() *schema.Resource { diff --git a/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign_test.go b/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign_test.go index 100929427..a95ebc65b 100644 --- a/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign_test.go +++ b/genesyscloud/outbound/data_source_genesyscloud_outbound_messagingcampaign_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var TrueValue = "true" diff --git a/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign.go b/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign.go index 9ee2e0ea9..b497d5851 100644 --- a/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign.go +++ b/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( diff --git a/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign_test.go b/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign_test.go index 0bbd54648..c0d206474 100644 --- a/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign_test.go +++ b/genesyscloud/outbound/resource_genesyscloud_outbound_messagingcampaign_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" obCallableTimeset "terraform-provider-genesyscloud/genesyscloud/outbound_callabletimeset" obContactList "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list" diff --git a/genesyscloud/outbound_attempt_limit/data_source_genesyscloud_outbound_attemptlimit.go b/genesyscloud/outbound_attempt_limit/data_source_genesyscloud_outbound_attemptlimit.go index 30a977b54..1d330796b 100644 --- a/genesyscloud/outbound_attempt_limit/data_source_genesyscloud_outbound_attemptlimit.go +++ b/genesyscloud/outbound_attempt_limit/data_source_genesyscloud_outbound_attemptlimit.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceOutboundAttemptLimit() *schema.Resource { diff --git a/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit.go b/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit.go index 0c0831cc6..febb736c6 100644 --- a/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit.go +++ b/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( diff --git a/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit_test.go b/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit_test.go index 896c8f02f..d9d1292be 100644 --- a/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit_test.go +++ b/genesyscloud/outbound_attempt_limit/resource_genesyscloud_outbound_attemptlimit_test.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // func init() { diff --git a/genesyscloud/outbound_callabletimeset/genesyscloud_outbound_callabletimeset_proxy.go b/genesyscloud/outbound_callabletimeset/genesyscloud_outbound_callabletimeset_proxy.go index ae17580c0..96f564262 100644 --- a/genesyscloud/outbound_callabletimeset/genesyscloud_outbound_callabletimeset_proxy.go +++ b/genesyscloud/outbound_callabletimeset/genesyscloud_outbound_callabletimeset_proxy.go @@ -6,7 +6,7 @@ import ( "log" "strings" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset.go b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset.go index 1010a36b2..c9eb25331 100644 --- a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset.go +++ b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_schema.go b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_schema.go index 703ef3099..d2ccb2cac 100644 --- a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_schema.go +++ b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_schema.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const resourceName = "genesyscloud_outbound_callabletimeset" @@ -23,13 +23,13 @@ var campaignTimeslotResource = &schema.Resource{ `start_time`: { Description: `The start time of the interval as an ISO-8601 string, i.e. HH:mm:ss`, Required: true, - ValidateDiagFunc: gcloud.ValidateTime, + ValidateDiagFunc: validators.ValidateTime, Type: schema.TypeString, }, `stop_time`: { Description: `The end time of the interval as an ISO-8601 string, i.e. HH:mm:ss`, Required: true, - ValidateDiagFunc: gcloud.ValidateTime, + ValidateDiagFunc: validators.ValidateTime, Type: schema.TypeString, }, `day`: { diff --git a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_test.go b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_test.go index 85ba29c80..12f28a9d2 100644 --- a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_test.go +++ b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundCallabletimeset(t *testing.T) { diff --git a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_utils.go b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_utils.go index 0396e70b2..acba89881 100644 --- a/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_utils.go +++ b/genesyscloud/outbound_callabletimeset/resource_genesyscloud_outbound_callabletimeset_utils.go @@ -5,7 +5,7 @@ import ( "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_callanalysisresponseset/genesyscloud_outbound_callanalysisresponseset_proxy.go b/genesyscloud/outbound_callanalysisresponseset/genesyscloud_outbound_callanalysisresponseset_proxy.go index 2b95656c5..5eded85c3 100644 --- a/genesyscloud/outbound_callanalysisresponseset/genesyscloud_outbound_callanalysisresponseset_proxy.go +++ b/genesyscloud/outbound_callanalysisresponseset/genesyscloud_outbound_callanalysisresponseset_proxy.go @@ -3,7 +3,7 @@ package outbound_callanalysisresponseset import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset.go b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset.go index bc6137047..90744ea1f 100644 --- a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset.go +++ b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_test.go b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_test.go index afebd9631..74cd9f5fd 100644 --- a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_test.go +++ b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundCallAnalysisResponseSet(t *testing.T) { diff --git a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_utils.go b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_utils.go index c8355105a..d48a46401 100644 --- a/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_utils.go +++ b/genesyscloud/outbound_callanalysisresponseset/resource_genesyscloud_outbound_callanalysisresponseset_utils.go @@ -3,7 +3,7 @@ package outbound_callanalysisresponseset import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "strings" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" ) diff --git a/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_init_test.go b/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_init_test.go index f36ee1489..03bdbd559 100644 --- a/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_init_test.go +++ b/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_init_test.go @@ -16,7 +16,7 @@ import ( telephonyProvidersEdgesSite "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_site" "testing" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) diff --git a/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_proxy.go b/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_proxy.go index 92c47562f..8105cebb3 100644 --- a/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_proxy.go +++ b/genesyscloud/outbound_campaign/genesyscloud_outbound_campaign_proxy.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign.go b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign.go index fa9ce68bc..bdcd48c47 100644 --- a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign.go +++ b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign.go @@ -15,7 +15,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_test.go b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_test.go index 5f6576e97..2ada8f3fa 100644 --- a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_test.go +++ b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // Add a special generator DEVENGAGE-1646. Basically, the API makes it look like you need a full phone_columns field here. However, the API ignores the type because the devs reused the phone_columns object. However, diff --git a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_utils.go b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_utils.go index 7bafc268f..6f8fdc95a 100644 --- a/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_utils.go +++ b/genesyscloud/outbound_campaign/resource_genesyscloud_outbound_campaign_utils.go @@ -18,7 +18,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_campaignrule/data_source_genesyscloud_outbound_campaignrule.go b/genesyscloud/outbound_campaignrule/data_source_genesyscloud_outbound_campaignrule.go index dfb9710a1..e6694ebb2 100644 --- a/genesyscloud/outbound_campaignrule/data_source_genesyscloud_outbound_campaignrule.go +++ b/genesyscloud/outbound_campaignrule/data_source_genesyscloud_outbound_campaignrule.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceOutboundCampaignruleRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/genesyscloud/outbound_campaignrule/genesyscloud_outbound_campaignrule_proxy.go b/genesyscloud/outbound_campaignrule/genesyscloud_outbound_campaignrule_proxy.go index a7708715f..0af2b5ba4 100644 --- a/genesyscloud/outbound_campaignrule/genesyscloud_outbound_campaignrule_proxy.go +++ b/genesyscloud/outbound_campaignrule/genesyscloud_outbound_campaignrule_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule.go b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule.go index 3dbc518f2..f94ae8fe3 100644 --- a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule.go +++ b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllAuthCampaignRules(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_test.go b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_test.go index 53b6eeab2..2a1726d2f 100644 --- a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_test.go +++ b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundCampaignRuleBasic(t *testing.T) { diff --git a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_unit_test.go b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_unit_test.go index 8fdae8811..aa5a5196c 100644 --- a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_unit_test.go +++ b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_unit_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_utils.go b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_utils.go index 8fb38aba3..0d3240299 100644 --- a/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_utils.go +++ b/genesyscloud/outbound_campaignrule/resource_genesyscloud_outbound_campaignrule_utils.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getCampaignruleFromResourceData(d *schema.ResourceData) platformclientv2.Campaignrule { diff --git a/genesyscloud/outbound_contact_list/data_source_genesyscloud_outbound_contactlist.go b/genesyscloud/outbound_contact_list/data_source_genesyscloud_outbound_contactlist.go index 21e1ffc39..3c2f58501 100644 --- a/genesyscloud/outbound_contact_list/data_source_genesyscloud_outbound_contactlist.go +++ b/genesyscloud/outbound_contact_list/data_source_genesyscloud_outbound_contactlist.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func DataSourceOutboundContactList() *schema.Resource { diff --git a/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist.go b/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist.go index 51a5daa7c..144afc54a 100644 --- a/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist.go +++ b/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( @@ -625,3 +625,13 @@ func GeneratePhoneColumnsDataTypeSpecBlock(columnName, columnDataType, min, max, } `, columnName, columnDataType, min, max, maxLength) } + +func GenerateEmailColumnsBlock(columnName, columnType, contactableTimeColumn string) string { + return fmt.Sprintf(` + email_columns { + column_name = "%s" + type = "%s" + contactable_time_column = %s + } +`, columnName, columnType, contactableTimeColumn) +} diff --git a/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist_test.go b/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist_test.go index 220478123..fd80cce10 100644 --- a/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist_test.go +++ b/genesyscloud/outbound_contact_list/resource_genesyscloud_outbound_contactlist_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundContactListBasic(t *testing.T) { @@ -67,12 +67,12 @@ func TestAccResourceOutboundContactListBasic(t *testing.T) { "home", strconv.Quote("Home"), ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Work", "work", util.NullValue, ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Personal", "personal", util.NullValue, @@ -124,12 +124,12 @@ func TestAccResourceOutboundContactListBasic(t *testing.T) { "home", strconv.Quote("Home"), ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Work", "work", util.NullValue, ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Personal", "personal", util.NullValue, @@ -182,12 +182,12 @@ func TestAccResourceOutboundContactListBasic(t *testing.T) { "home", strconv.Quote("Home"), ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Work", "work", util.NullValue, ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Personal", "personal", util.NullValue, @@ -276,12 +276,12 @@ func TestAccResourceOutboundContactListBasic(t *testing.T) { "home", util.NullValue, ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Work", "work", strconv.Quote(zipCodeColumnName), ), - generateEmailColumnsBlock( + GenerateEmailColumnsBlock( "Personal", "personal", strconv.Quote(zipCodeColumnName), @@ -342,16 +342,6 @@ func TestAccResourceOutboundContactListBasic(t *testing.T) { }) } -func generateEmailColumnsBlock(columnName, columnType, contactableTimeColumn string) string { - return fmt.Sprintf(` - email_columns { - column_name = "%s" - type = "%s" - contactable_time_column = %s - } -`, columnName, columnType, contactableTimeColumn) -} - func testVerifyContactListDestroyed(state *terraform.State) error { outboundAPI := platformclientv2.NewOutboundApi() for _, rs := range state.RootModule().Resources { diff --git a/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_init_test.go b/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_init_test.go new file mode 100644 index 000000000..e6c0f5694 --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_init_test.go @@ -0,0 +1,42 @@ +package outbound_contact_list_contact + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "sync" + outboundContactList "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list" + "testing" +) + +// providerResources holds a map of all registered resources +var providerResources map[string]*schema.Resource + +type registerTestInstance struct { + resourceMapMutex sync.RWMutex +} + +// registerTestResources registers all resources used in the tests +func (r *registerTestInstance) registerTestResources() { + r.resourceMapMutex.Lock() + defer r.resourceMapMutex.Unlock() + + providerResources[resourceName] = ResourceOutboundContactListContact() + providerResources["genesyscloud_outbound_contact_list"] = outboundContactList.ResourceOutboundContactList() +} + +// initTestResources initializes all test resources. +func initTestResources() { + providerResources = make(map[string]*schema.Resource) + + regInstance := ®isterTestInstance{} + + regInstance.registerTestResources() +} + +// 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 outbound_contact_list_contact package + initTestResources() + + // Run the test suite for the outbound_contact_list_contact package + m.Run() +} diff --git a/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_proxy.go b/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_proxy.go new file mode 100644 index 000000000..021e5b804 --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/genesyscloud_outbound_contact_list_contact_proxy.go @@ -0,0 +1,179 @@ +package outbound_contact_list_contact + +import ( + "context" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" +) + +var internalProxy *contactProxy + +type createContactFunc func(ctx context.Context, p *contactProxy, contactListId string, contact platformclientv2.Writabledialercontact, priority, clearSystemData, doNotQueue bool) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) +type readContactByIdFunc func(ctx context.Context, p *contactProxy, contactListId, contactId string) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) +type updateContactFunc func(ctx context.Context, p *contactProxy, contactListId string, contactId string, contact platformclientv2.Dialercontact) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) +type deleteContactFunc func(ctx context.Context, p *contactProxy, contactListId, contactId string) (*platformclientv2.APIResponse, error) +type getAllContactsFunc func(ctx context.Context, p *contactProxy) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) + +type contactProxy struct { + clientConfig *platformclientv2.Configuration + outboundApi *platformclientv2.OutboundApi + createContactAttr createContactFunc + readContactByIdAttr readContactByIdFunc + updateContactAttr updateContactFunc + deleteContactAttr deleteContactFunc + getAllContactsAttr getAllContactsFunc + contactCache rc.CacheInterface[platformclientv2.Dialercontact] +} + +func newContactProxy(clientConfig *platformclientv2.Configuration) *contactProxy { + api := platformclientv2.NewOutboundApiWithConfig(clientConfig) + contactCache := rc.NewResourceCache[platformclientv2.Dialercontact]() + return &contactProxy{ + clientConfig: clientConfig, + outboundApi: api, + createContactAttr: createContactFn, + readContactByIdAttr: readContactByIdFn, + updateContactAttr: updateContactFn, + deleteContactAttr: deleteContactFn, + getAllContactsAttr: getAllContactsFn, + contactCache: contactCache, + } +} + +func getContactProxy(clientConfig *platformclientv2.Configuration) *contactProxy { + if internalProxy == nil { + internalProxy = newContactProxy(clientConfig) + } + + return internalProxy +} + +func (p *contactProxy) createContact(ctx context.Context, contactListId string, contact platformclientv2.Writabledialercontact, priority, clearSystemData, doNotQueue bool) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.createContactAttr(ctx, p, contactListId, contact, priority, clearSystemData, doNotQueue) +} + +func (p *contactProxy) readContactById(ctx context.Context, contactListId, contactId string) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.readContactByIdAttr(ctx, p, contactListId, contactId) +} + +func (p *contactProxy) updateContact(ctx context.Context, contactListId, contactId string, contact platformclientv2.Dialercontact) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.updateContactAttr(ctx, p, contactListId, contactId, contact) +} + +func (p *contactProxy) deleteContact(ctx context.Context, contactListId, contactId string) (*platformclientv2.APIResponse, error) { + return p.deleteContactAttr(ctx, p, contactListId, contactId) +} + +func (p *contactProxy) getAllContacts(ctx context.Context) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.getAllContactsAttr(ctx, p) +} + +func createContactFn(_ context.Context, p *contactProxy, contactListId string, contact platformclientv2.Writabledialercontact, priority, clearSystemData, doNotQueue bool) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.outboundApi.PostOutboundContactlistContacts(contactListId, []platformclientv2.Writabledialercontact{contact}, priority, clearSystemData, doNotQueue) +} + +func readContactByIdFn(_ context.Context, p *contactProxy, contactListId, contactId string) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + if contact := rc.GetCacheItem(p.contactCache, contactId); contact != nil { + return contact, nil, nil + } + return p.outboundApi.GetOutboundContactlistContact(contactListId, contactId) +} + +func updateContactFn(_ context.Context, p *contactProxy, contactListId, contactId string, contact platformclientv2.Dialercontact) (*platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + return p.outboundApi.PutOutboundContactlistContact(contactListId, contactId, contact) +} + +func deleteContactFn(_ context.Context, p *contactProxy, contactListId, contactId string) (*platformclientv2.APIResponse, error) { + return p.outboundApi.DeleteOutboundContactlistContact(contactListId, contactId) +} + +func getAllContactsFn(ctx context.Context, p *contactProxy) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + var allContacts []platformclientv2.Dialercontact + + contactListIds, resp, err := p.getAllContactListIds(ctx) + if err != nil { + return allContacts, resp, err + } + + for _, contactListId := range contactListIds { + contacts, resp, err := p.getContactsByContactListId(ctx, contactListId) + if err != nil { + return nil, resp, err + } + allContacts = append(allContacts, contacts...) + } + + for _, contact := range allContacts { + rc.SetCache(p.contactCache, *contact.Id, contact) + } + + return allContacts, nil, nil +} + +func (p *contactProxy) getContactsByContactListId(_ context.Context, contactListId string) ([]platformclientv2.Dialercontact, *platformclientv2.APIResponse, error) { + var ( + pageNum = 1 + pageSize = 50 + allContacts []platformclientv2.Dialercontact + ) + + body := platformclientv2.Contactlistingrequest{ + PageNumber: &pageNum, + PageSize: &pageSize, + } + + data, resp, err := p.outboundApi.PostOutboundContactlistContactsSearch(contactListId, body) + if err != nil { + return nil, resp, err + } + if data.Entities == nil || len(*data.Entities) == 0 { + return nil, nil, nil + } + allContacts = append(allContacts, *data.Entities...) + + for pageNum = 2; pageNum <= *data.PageCount; pageNum++ { + body.PageNumber = &pageNum + data, resp, err = p.outboundApi.PostOutboundContactlistContactsSearch(contactListId, body) + if err != nil { + return nil, resp, err + } + if data.Entities == nil || len(*data.Entities) == 0 { + break + } + allContacts = append(allContacts, *data.Entities...) + } + + return allContacts, nil, nil +} + +func (p *contactProxy) getAllContactListIds(_ context.Context) ([]string, *platformclientv2.APIResponse, error) { + const pageSize = 100 + var pageNum = 1 + var allContactListIds []string + + contactListConfigs, resp, getErr := p.outboundApi.GetOutboundContactlists(false, false, pageSize, pageNum, true, "", "", []string{}, []string{}, "", "") + if getErr != nil { + return nil, resp, getErr + } + if contactListConfigs.Entities == nil || len(*contactListConfigs.Entities) == 0 { + return nil, nil, nil + } + for _, cl := range *contactListConfigs.Entities { + allContactListIds = append(allContactListIds, *cl.Id) + } + + for pageNum := 2; pageNum <= *contactListConfigs.PageCount; pageNum++ { + contactListConfigs, resp, getErr := p.outboundApi.GetOutboundContactlists(false, false, pageSize, pageNum, true, "", "", []string{}, []string{}, "", "") + if getErr != nil { + return nil, resp, getErr + } + if contactListConfigs.Entities == nil || len(*contactListConfigs.Entities) == 0 { + break + } + for _, cl := range *contactListConfigs.Entities { + allContactListIds = append(allContactListIds, *cl.Id) + } + } + + return allContactListIds, nil, nil +} diff --git a/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact.go b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact.go new file mode 100644 index 000000000..d8e4cdab6 --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact.go @@ -0,0 +1,153 @@ +package outbound_contact_list_contact + +import ( + "context" + "fmt" + "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" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + "log" + "terraform-provider-genesyscloud/genesyscloud/consistency_checker" + "terraform-provider-genesyscloud/genesyscloud/provider" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + "terraform-provider-genesyscloud/genesyscloud/util" + "terraform-provider-genesyscloud/genesyscloud/util/constants" + "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" + "time" +) + +func getAllContacts(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { + resources := make(resourceExporter.ResourceIDMetaMap) + cp := getContactProxy(clientConfig) + + contacts, resp, err := cp.getAllContacts(ctx) + if err != nil { + msg := fmt.Sprintf("Failed to read all contact list contacts. Error: %v", err) + if resp != nil { + return nil, util.BuildAPIDiagnosticError(resourceName, msg, resp) + } + return nil, util.BuildDiagnosticError(resourceName, msg, err) + } + + for _, contact := range contacts { + //id := createCustomContactId(*contact.ContactListId, *contact.Id) + resources[*contact.Id] = &resourceExporter.ResourceMeta{Name: *contact.Id} + } + + return resources, nil +} + +func createOutboundContactListContact(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + cp := getContactProxy(sdkConfig) + + contactListId := d.Get("contact_list_id").(string) + priority := d.Get("priority").(bool) + clearSystemData := d.Get("clear_system_data").(bool) + doNotQueue := d.Get("do_not_queue").(bool) + + contactRequestBody := buildWritableContactFromResourceData(d) + + log.Printf("Creating contact in contact list '%s'", contactListId) + contactResponseBody, resp, err := cp.createContact(ctx, contactListId, contactRequestBody, priority, clearSystemData, doNotQueue) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("failed to create contact '%s' for contact list '%s': %v", *contactRequestBody.Id, contactListId, err), resp) + } + + if len(contactResponseBody) != 1 { + msg := fmt.Sprintf("expected to receive one dialer contact object in contact creation response. Received %v", len(contactResponseBody)) + return util.BuildDiagnosticError(resourceName, msg, fmt.Errorf("%v", msg)) + } + + d.SetId(*contactResponseBody[0].Id) + log.Printf("Finished creating contact '%s' in contact list '%s'", d.Id(), contactListId) + return readOutboundContactListContact(ctx, d, meta) +} + +func readOutboundContactListContact(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + var ( + resp *platformclientv2.APIResponse + err error + + sdkConfig = meta.(*provider.ProviderMeta).ClientConfig + cp = getContactProxy(sdkConfig) + + contactListId = d.Get("contact_list_id").(string) + ) + + cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceOutboundContactListContact(), constants.DefaultConsistencyChecks, resourceName) + + retryErr := util.WithRetriesForRead(ctx, d, func() *retry.RetryError { + var contactResponseBody *platformclientv2.Dialercontact + + log.Printf("Reading contact '%s' in contact list '%s'", d.Id(), contactListId) + contactResponseBody, resp, err = cp.readContactById(ctx, contactListId, d.Id()) + if err != nil { + if util.IsStatus404(resp) { + return retry.RetryableError(err) + } + return retry.NonRetryableError(err) + } + + _ = d.Set("contact_list_id", *contactResponseBody.ContactListId) + resourcedata.SetNillableValue(d, "callable", contactResponseBody.Callable) + resourcedata.SetNillableValue(d, "data", contactResponseBody.Data) + resourcedata.SetNillableValueWithSchemaSetWithFunc(d, "phone_number_status", contactResponseBody.PhoneNumberStatus, flattenPhoneNumberStatus) + resourcedata.SetNillableValueWithSchemaSetWithFunc(d, "contactable_status", contactResponseBody.ContactableStatus, flattenContactableStatus) + + return cc.CheckState(d) + }) + if retryErr != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("failed to read contact by ID '%s' from contact list '%s'. Error: %v", d.Id(), contactListId, retryErr), resp) + } + log.Printf("Done reading contact '%s' in contact list '%s'", d.Id(), contactListId) + return nil +} + +func updateOutboundContactListContact(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + cp := getContactProxy(sdkConfig) + + contactRequestBody := buildDialerContactFromResourceData(d) + contactListId := *contactRequestBody.ContactListId + + log.Printf("Updating contact '%s' in contact list '%s'", d.Id(), contactListId) + _, resp, err := cp.updateContact(ctx, contactListId, d.Id(), contactRequestBody) + if err != nil { + msg := fmt.Sprintf("failed to update contact '%s' for contact list '%s'. Error: %v", d.Id(), contactListId, err) + return util.BuildAPIDiagnosticError(resourceName, msg, resp) + } + + log.Printf("Finished updating contact '%s' in contact list '%s'", d.Id(), contactListId) + return readOutboundContactListContact(ctx, d, meta) +} + +func deleteOutboundContactListContact(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + cp := getContactProxy(sdkConfig) + + contactListId := d.Get("contact_list_id").(string) + + log.Printf("Deleting contact '%s' from contact list '%s'", d.Id(), contactListId) + resp, err := cp.deleteContact(ctx, contactListId, d.Id()) + if err != nil { + msg := fmt.Sprintf("failed to delete contact '%s' from contact list '%s'. Error: %v", d.Id(), contactListId, err) + return util.BuildAPIDiagnosticError(resourceName, msg, resp) + } + + return util.WithRetries(ctx, 60*time.Second, func() *retry.RetryError { + log.Printf("Reading contact '%s'", d.Id()) + _, resp, err := cp.readContactById(ctx, contactListId, d.Id()) + if err != nil { + if util.IsStatus404(resp) { + log.Printf("Contact '%s' deleted", d.Id()) + return nil + } + msg := fmt.Sprintf("failed to delete contact '%s'. Error: %v", d.Id(), err) + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, msg, resp)) + } + msg := fmt.Sprintf("contact '%s' still exists in contact list '%s'", d.Id(), contactListId) + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, msg, resp)) + }) +} diff --git a/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_schema.go b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_schema.go new file mode 100644 index 000000000..445f32893 --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_schema.go @@ -0,0 +1,147 @@ +package outbound_contact_list_contact + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "terraform-provider-genesyscloud/genesyscloud/provider" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" +) + +const resourceName = "genesyscloud_outbound_contact_list_contact" + +func SetRegistrar(regInstance registrar.Registrar) { + regInstance.RegisterResource(resourceName, ResourceOutboundContactListContact()) + regInstance.RegisterExporter(resourceName, ContactExporter()) +} + +var ( + contactableStatusResource = &schema.Resource{ + Schema: map[string]*schema.Schema{ + "media_type": { + Description: `The key which identifies the media type (Voice, SMS and Email).`, + Type: schema.TypeString, + Required: true, + }, + "contactable": { + Description: `Indicates whether or not the entire contact is contactable for the associated media type.`, + Type: schema.TypeBool, + Required: true, + }, + "column_status": { + Description: `A map of individual contact method columns to whether the individual column is contactable for the associated media type.`, + Type: schema.TypeSet, + Optional: true, + Elem: columnStatusResource, + }, + }, + } + columnStatusResource = &schema.Resource{ + Schema: map[string]*schema.Schema{ + "column": { + Description: `The key which identifies the contact method column.`, + Type: schema.TypeString, + Required: true, + }, + "contactable": { + Description: `Indicates whether or not an individual contact method column is contactable.`, + Type: schema.TypeBool, + Required: true, + }, + }, + } + phoneNumberStatusResource = &schema.Resource{ + Schema: map[string]*schema.Schema{ + "key": { + Description: `Phone number column identifier.`, + Type: schema.TypeString, + Required: true, + }, + "callable": { + Description: `Indicates whether or not a phone number is callable.`, + Type: schema.TypeBool, + Required: true, + }, + }, + } +) + +func ContactExporter() *resourceExporter.ResourceExporter { + return &resourceExporter.ResourceExporter{ + GetResourcesFunc: provider.GetAllWithPooledClient(getAllContacts), + RefAttrs: map[string]*resourceExporter.RefAttrSettings{ + "contact_list_id": {RefType: "genesyscloud_outbound_contact_list"}, + }, + AllowZeroValuesInMap: []string{"data"}, + } +} + +func ResourceOutboundContactListContact() *schema.Resource { + return &schema.Resource{ + Description: `Genesys Cloud Outbound Contact List Contact`, + + CreateContext: provider.CreateWithPooledClient(createOutboundContactListContact), + ReadContext: provider.ReadWithPooledClient(readOutboundContactListContact), + UpdateContext: provider.UpdateWithPooledClient(updateOutboundContactListContact), + DeleteContext: provider.DeleteWithPooledClient(deleteOutboundContactListContact), + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + SchemaVersion: 1, + Schema: map[string]*schema.Schema{ + "contact_list_id": { + Description: `The identifier of the contact list containing this contact.`, + ForceNew: true, + Required: true, + Type: schema.TypeString, + }, + "priority": { + Description: `Contact priority. True means the contact(s) will be dialed next; false means the contact will go to the end of the contact queue. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded.`, + ForceNew: true, + Optional: true, + Type: schema.TypeBool, + }, + "clear_system_data": { + Description: `Clear system data. True means the system columns (attempts, callable status, etc) stored on the contact will be cleared if the contact already exists; false means they won't. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded.`, + ForceNew: true, + Optional: true, + Type: schema.TypeBool, + }, + "do_not_queue": { + Description: `Do not queue. True means that updated contacts will not have their positions in the queue altered, so contacts that have already been dialed will not be redialed. +For new contacts, this parameter has no effect; False means that updated contacts will be re-queued, according to the 'priority' parameter. +Only applicable on the creation of a contact, so updating this field will force the contact to be deleted from the contact list and re-uploaded.`, + ForceNew: true, + Optional: true, + Type: schema.TypeBool, + }, + "callable": { + Description: `Indicates whether or not the contact can be called.`, + Type: schema.TypeBool, + Default: false, + Optional: true, + }, + "data": { + Description: `An ordered map of the contact's columns and corresponding values.`, + Type: schema.TypeMap, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "phone_number_status": { + Description: `A map of phone number columns to PhoneNumberStatuses, which indicate if the phone number is callable or not.`, + Type: schema.TypeSet, + Optional: true, + ForceNew: true, + Elem: phoneNumberStatusResource, + }, + "contactable_status": { + Description: `A map of media types (Voice, SMS and Email) to ContactableStatus, which indicates if the contact can be contacted using the specified media type.`, + Type: schema.TypeSet, + Optional: true, + ForceNew: true, + Elem: contactableStatusResource, + }, + }, + } +} diff --git a/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_test.go b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_test.go new file mode 100644 index 000000000..4a923fc7c --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_test.go @@ -0,0 +1,176 @@ +package outbound_contact_list_contact + +import ( + "fmt" + "github.com/google/uuid" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "strconv" + outboundContactList "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list" + "terraform-provider-genesyscloud/genesyscloud/provider" + "terraform-provider-genesyscloud/genesyscloud/util" + "testing" +) + +func TestAccResourceOutboundContactListContact(t *testing.T) { + var ( + resourceId = "contact" + fullResourceId = fmt.Sprintf("%s.%s", resourceName, resourceId) + + cellColumnKey = "Cell" + dataCellValue = "+000000" + dataCellValueUpdated = "+111111" + + homeColumnKey = "Home" + dataHomeValue = "+22222222" + dataHomeValueUpdated = "+33333333" + + emailColumnKey = "Email" + dataEmailValue = "email@fake.com" + dataEmailValueUpdated = "fake@email.cmo" + + contactListResourceId = "contact_list" + contactListFullResourceId = "genesyscloud_outbound_contact_list." + contactListResourceId + contactListName = "tf test contact list " + uuid.NewString() + columnNames = []string{ + strconv.Quote(cellColumnKey), + strconv.Quote(homeColumnKey), + strconv.Quote(emailColumnKey), + } + ) + + const ( + emailMediaType = "Email" + voiceMediaType = "Voice" + ) + + contactListResource := outboundContactList.GenerateOutboundContactList( + contactListResourceId, + contactListName, + util.NullValue, + strconv.Quote(cellColumnKey), + []string{strconv.Quote(cellColumnKey)}, + columnNames, + util.FalseValue, + util.NullValue, + util.NullValue, + outboundContactList.GenerateEmailColumnsBlock( + emailColumnKey, + "work", + util.NullValue, + ), + outboundContactList.GeneratePhoneColumnsBlock( + cellColumnKey, + "cell", + strconv.Quote(cellColumnKey), + ), + outboundContactList.GeneratePhoneColumnsBlock( + homeColumnKey, + "home", + strconv.Quote(cellColumnKey), + ), + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { util.TestAccPreCheck(t) }, + ProviderFactories: provider.GetProviderFactories(providerResources, nil), + Steps: []resource.TestStep{ + { + Config: contactListResource + GenerateOutboundContactListContact( + resourceId, + contactListFullResourceId+".id", + util.TrueValue, + util.GenerateMapAttrWithMapProperties( + "data", + map[string]string{ + cellColumnKey: strconv.Quote(dataCellValue), + homeColumnKey: strconv.Quote(dataHomeValue), + emailColumnKey: strconv.Quote(dataEmailValue), + }, + ), + GeneratePhoneNumberStatus(cellColumnKey, util.FalseValue), + GeneratePhoneNumberStatus(homeColumnKey, util.TrueValue), + GenerateContactableStatus( + voiceMediaType, + util.FalseValue, // contactable + GenerateColumnStatus(cellColumnKey, util.FalseValue), + ), + GenerateContactableStatus( + emailMediaType, + util.TrueValue, // contactable + GenerateColumnStatus(emailColumnKey, util.TrueValue), + ), + ), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fullResourceId, "callable", util.TrueValue), + resource.TestCheckResourceAttrPair(fullResourceId, "contact_list_id", contactListFullResourceId, "id"), + resource.TestCheckResourceAttr(fullResourceId, "data."+cellColumnKey, dataCellValue), + resource.TestCheckResourceAttr(fullResourceId, "data."+homeColumnKey, dataHomeValue), + resource.TestCheckResourceAttr(fullResourceId, "data."+emailColumnKey, dataEmailValue), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.#", "2"), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.0.key", cellColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.0.callable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.1.key", homeColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.1.callable", util.TrueValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.#", "2"), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.media_type", voiceMediaType), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.contactable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.column_status.0.column", cellColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.column_status.0.contactable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.media_type", emailMediaType), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.contactable", util.TrueValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.column_status.0.column", emailColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.column_status.0.contactable", util.TrueValue), + ), + }, + { + // Update + Config: contactListResource + GenerateOutboundContactListContact( + resourceId, + contactListFullResourceId+".id", + util.FalseValue, + util.GenerateMapAttrWithMapProperties( + "data", + map[string]string{ + cellColumnKey: strconv.Quote(dataCellValueUpdated), + homeColumnKey: strconv.Quote(dataHomeValueUpdated), + emailColumnKey: strconv.Quote(dataEmailValueUpdated), + }, + ), + GeneratePhoneNumberStatus(cellColumnKey, util.FalseValue), + GeneratePhoneNumberStatus(homeColumnKey, util.TrueValue), + GenerateContactableStatus( + voiceMediaType, + util.FalseValue, // contactable + GenerateColumnStatus(cellColumnKey, util.FalseValue), + ), + GenerateContactableStatus( + emailMediaType, + util.TrueValue, // contactable + GenerateColumnStatus(emailColumnKey, util.TrueValue), + ), + ), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fullResourceId, "callable", util.FalseValue), + resource.TestCheckResourceAttrPair(fullResourceId, "contact_list_id", contactListFullResourceId, "id"), + resource.TestCheckResourceAttr(fullResourceId, "data."+cellColumnKey, dataCellValueUpdated), + resource.TestCheckResourceAttr(fullResourceId, "data."+homeColumnKey, dataHomeValueUpdated), + resource.TestCheckResourceAttr(fullResourceId, "data."+emailColumnKey, dataEmailValueUpdated), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.#", "2"), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.0.key", cellColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.0.callable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.1.key", homeColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "phone_number_status.1.callable", util.TrueValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.#", "2"), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.media_type", voiceMediaType), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.contactable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.column_status.0.column", cellColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.0.column_status.0.contactable", util.FalseValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.media_type", emailMediaType), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.contactable", util.TrueValue), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.column_status.0.column", emailColumnKey), + resource.TestCheckResourceAttr(fullResourceId, "contactable_status.1.column_status.0.contactable", util.TrueValue), + ), + }, + }, + }) +} diff --git a/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_utils.go b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_utils.go new file mode 100644 index 000000000..797624746 --- /dev/null +++ b/genesyscloud/outbound_contact_list_contact/resource_genesyscloud_outbound_contact_list_contact_utils.go @@ -0,0 +1,182 @@ +package outbound_contact_list_contact + +import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + "strings" + utillists "terraform-provider-genesyscloud/genesyscloud/util/lists" + "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" +) + +// buildWritableContactFromResourceData used to build the request body for contact creation +func buildWritableContactFromResourceData(d *schema.ResourceData) platformclientv2.Writabledialercontact { + contactListId := d.Get("contact_list_id").(string) + callable := d.Get("callable").(bool) + + var contactRequest = platformclientv2.Writabledialercontact{ + ContactListId: &contactListId, + Callable: &callable, + } + + if dataMap, ok := d.Get("data").(map[string]any); ok { + stringMap := utillists.ConvertMapStringAnyToMapStringString(dataMap) + contactRequest.Data = &stringMap + } + + contactRequest.PhoneNumberStatus = buildPhoneNumberStatus(d) + contactRequest.ContactableStatus = buildContactableStatus(d) + return contactRequest +} + +// buildDialerContactFromResourceData used to build the request body for contact updates +func buildDialerContactFromResourceData(d *schema.ResourceData) platformclientv2.Dialercontact { + contactListId := d.Get("contact_list_id").(string) + callable := d.Get("callable").(bool) + var contactRequest = platformclientv2.Dialercontact{ + ContactListId: &contactListId, + Callable: &callable, + } + if dataMap, ok := d.Get("data").(map[string]any); ok { + stringMap := utillists.ConvertMapStringAnyToMapStringString(dataMap) + contactRequest.Data = &stringMap + } + contactRequest.PhoneNumberStatus = buildPhoneNumberStatus(d) + contactRequest.ContactableStatus = buildContactableStatus(d) + return contactRequest +} + +func buildContactableStatus(d *schema.ResourceData) *map[string]platformclientv2.Contactablestatus { + contactableStatus, ok := d.Get("contactable_status").(*schema.Set) + if !ok { + return nil + } + + contactableStatusMap := make(map[string]platformclientv2.Contactablestatus) + + contactableStatusList := contactableStatus.List() + for _, status := range contactableStatusList { + currentStatusMap := status.(map[string]any) + mediaType := currentStatusMap["media_type"].(string) + contactable := currentStatusMap["contactable"].(bool) + + columnStatusMap := make(map[string]platformclientv2.Columnstatus) + if columnStatus, ok := currentStatusMap["column_status"].(*schema.Set); ok { + columnStatusList := columnStatus.List() + for _, status := range columnStatusList { + currentColumnStatusMap := status.(map[string]any) + column := currentColumnStatusMap["column"].(string) + columnContactable := currentColumnStatusMap["contactable"].(bool) + columnStatusMap[column] = platformclientv2.Columnstatus{ + Contactable: &columnContactable, + } + } + } + contactableStatusMap[mediaType] = platformclientv2.Contactablestatus{ + Contactable: &contactable, + ColumnStatus: &columnStatusMap, + } + } + + return &contactableStatusMap +} + +func buildPhoneNumberStatus(d *schema.ResourceData) *map[string]platformclientv2.Phonenumberstatus { + phoneNumberStatus, ok := d.Get("phone_number_status").(*schema.Set) + if !ok { + return nil + } + + phoneNumberStatusMap := make(map[string]platformclientv2.Phonenumberstatus) + + phoneNumberStatusList := phoneNumberStatus.List() + for _, status := range phoneNumberStatusList { + statusMap := status.(map[string]any) + key := statusMap["key"].(string) + callable, _ := statusMap["callable"].(bool) + phoneNumberStatusMap[key] = platformclientv2.Phonenumberstatus{ + Callable: &callable, + } + } + + return &phoneNumberStatusMap +} + +func flattenPhoneNumberStatus(phoneNumberStatus *map[string]platformclientv2.Phonenumberstatus) *schema.Set { + pnsSet := schema.NewSet(schema.HashResource(phoneNumberStatusResource), []interface{}{}) + for k, v := range *phoneNumberStatus { + pns := make(map[string]any) + pns["key"] = k + resourcedata.SetMapValueIfNotNil(pns, "callable", v.Callable) + pnsSet.Add(pns) + } + return pnsSet +} + +func flattenContactableStatus(contactableStatus *map[string]platformclientv2.Contactablestatus) *schema.Set { + csSet := schema.NewSet(schema.HashResource(contactableStatusResource), []interface{}{}) + for k, v := range *contactableStatus { + cs := make(map[string]any) + cs["media_type"] = k + cs["contactable"] = *v.Contactable + if v.ColumnStatus != nil { + cs["column_status"] = flattenColumnStatus(v.ColumnStatus) + } + csSet.Add(cs) + } + return csSet +} + +func flattenColumnStatus(columnStatus *map[string]platformclientv2.Columnstatus) *schema.Set { + if columnStatus == nil { + return nil + } + csSet := schema.NewSet(schema.HashResource(columnStatusResource), []interface{}{}) + for k, v := range *columnStatus { + cs := make(map[string]any) + cs["column"] = k + cs["contactable"] = *v.Contactable + csSet.Add(cs) + } + return csSet +} + +func GenerateOutboundContactListContact( + resourceId, + contactListId, + callable, + data string, + nestedBlocks ...string, +) string { + return fmt.Sprintf(`resource "%s" "%s" { + contact_list_id = %s + callable = %s + %s + %s +}`, resourceName, resourceId, contactListId, callable, data, strings.Join(nestedBlocks, "\n")) +} + +func GeneratePhoneNumberStatus(key, callable string) string { + return fmt.Sprintf(` + phone_number_status { + key = "%s" + callable = %s + }`, key, callable) +} + +func GenerateContactableStatus(mediaType, contactable string, nestedBlocks ...string) string { + return fmt.Sprintf(` + contactable_status { + media_type = "%s" + contactable = %s + %s + }`, mediaType, contactable, strings.Join(nestedBlocks, "\n")) +} + +func GenerateColumnStatus(column, contactable string) string { + return fmt.Sprintf(` + column_status { + column = "%s" + contactable = %s + }`, column, contactable) +} diff --git a/genesyscloud/outbound_contactlistfilter/genesyscloud_outbound_contactlistfilter_proxy.go b/genesyscloud/outbound_contactlistfilter/genesyscloud_outbound_contactlistfilter_proxy.go index c5162898d..b1e9651bb 100644 --- a/genesyscloud/outbound_contactlistfilter/genesyscloud_outbound_contactlistfilter_proxy.go +++ b/genesyscloud/outbound_contactlistfilter/genesyscloud_outbound_contactlistfilter_proxy.go @@ -3,7 +3,7 @@ package outbound_contactlistfilter import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter.go b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter.go index 3949e2513..135ed9a44 100644 --- a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter.go +++ b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_test.go b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_test.go index f290bba27..385842ec2 100644 --- a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_test.go +++ b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundContactListFilter(t *testing.T) { diff --git a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_utils.go b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_utils.go index 72deee21a..ae8aa6042 100644 --- a/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_utils.go +++ b/genesyscloud/outbound_contactlistfilter/resource_genesyscloud_outbound_contactlistfilter_utils.go @@ -3,7 +3,7 @@ package outbound_contactlistfilter import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "strings" "terraform-provider-genesyscloud/genesyscloud/util" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" diff --git a/genesyscloud/outbound_dnclist/genesyscloud_outbound_dnclist_proxy.go b/genesyscloud/outbound_dnclist/genesyscloud_outbound_dnclist_proxy.go index f81b77b47..dc051f755 100644 --- a/genesyscloud/outbound_dnclist/genesyscloud_outbound_dnclist_proxy.go +++ b/genesyscloud/outbound_dnclist/genesyscloud_outbound_dnclist_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/util" ) diff --git a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist.go b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist.go index f52c9c23d..5a98e1aa7 100644 --- a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist.go +++ b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllOutboundDncLists(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_schema.go b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_schema.go index 85bf567c2..c44abd1c7 100644 --- a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_schema.go +++ b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_schema.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const resourceName = "genesyscloud_outbound_dnclist" @@ -90,7 +90,7 @@ func ResourceOutboundDncList() *schema.Resource { Description: `Expiration date for DNC phone numbers in yyyy-MM-ddTHH:mmZ format.`, Optional: true, Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidateDateTime, + ValidateDiagFunc: validators.ValidateDateTime, }, `phone_numbers`: { Description: `Phone numbers to add to a DNC list. Only possible if the dncSourceType is rds. Phone numbers must be in an E.164 number format.`, @@ -98,7 +98,7 @@ func ResourceOutboundDncList() *schema.Resource { Type: schema.TypeList, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, }, }, diff --git a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_test.go b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_test.go index aa68d31e3..1eed72464 100644 --- a/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_test.go +++ b/genesyscloud/outbound_dnclist/resource_genesyscloud_outbound_dnclist_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const NullValue = "null" diff --git a/genesyscloud/outbound_filespecificationtemplate/genesyscloud_outbound_filespecificationtemplate_proxy.go b/genesyscloud/outbound_filespecificationtemplate/genesyscloud_outbound_filespecificationtemplate_proxy.go index 8c313f6c5..189cc266b 100644 --- a/genesyscloud/outbound_filespecificationtemplate/genesyscloud_outbound_filespecificationtemplate_proxy.go +++ b/genesyscloud/outbound_filespecificationtemplate/genesyscloud_outbound_filespecificationtemplate_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate.go b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate.go index 6e24fed69..8aaed672a 100644 --- a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate.go +++ b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllFileSpecificationTemplates(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_test.go b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_test.go index e4b4679d5..7e272fa62 100644 --- a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_test.go +++ b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundFileSpecificationTemplate(t *testing.T) { diff --git a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_utils.go b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_utils.go index 23e9742bb..f765fa485 100644 --- a/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_utils.go +++ b/genesyscloud/outbound_filespecificationtemplate/resource_genesyscloud_outbound_filespecificationtemplate_utils.go @@ -2,7 +2,7 @@ package outbound_filespecificationtemplate import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" ) diff --git a/genesyscloud/outbound_ruleset/genesyscloud_outbound_ruleset_proxy.go b/genesyscloud/outbound_ruleset/genesyscloud_outbound_ruleset_proxy.go index 24fb87044..5e12b64ee 100644 --- a/genesyscloud/outbound_ruleset/genesyscloud_outbound_ruleset_proxy.go +++ b/genesyscloud/outbound_ruleset/genesyscloud_outbound_ruleset_proxy.go @@ -6,7 +6,7 @@ import ( "log" "strings" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset.go b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset.go index ecac64ea6..37cfa4574 100644 --- a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset.go +++ b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_test.go b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_test.go index 18a4b4b31..d25b21570 100644 --- a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_test.go +++ b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_test.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" obContactList "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list" ) diff --git a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_unit_test.go b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_unit_test.go index 29f9c322d..d39433a83 100644 --- a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_unit_test.go +++ b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_unit_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestUnitDoesRuleConditionsRefDeletedSkill(t *testing.T) { diff --git a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_utils.go b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_utils.go index d97906f4e..6266b7a65 100644 --- a/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_utils.go +++ b/genesyscloud/outbound_ruleset/resource_genesyscloud_outbound_ruleset_utils.go @@ -9,7 +9,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_init_test.go b/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_init_test.go index 9a1442ada..35029a3e7 100644 --- a/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_init_test.go +++ b/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_init_test.go @@ -12,7 +12,7 @@ import ( edgeSite "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_site" "testing" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) diff --git a/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_proxy.go b/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_proxy.go index 18068343a..85532bf50 100644 --- a/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_proxy.go +++ b/genesyscloud/outbound_sequence/genesyscloud_outbound_sequence_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence.go b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence.go index d664c7f70..5bb9e88d7 100644 --- a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence.go +++ b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_test.go b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_test.go index 641cebf91..3740a0da7 100644 --- a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_test.go +++ b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceOutboundSequence(t *testing.T) { diff --git a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_utils.go b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_utils.go index d6bd708b2..3040db3dc 100644 --- a/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_utils.go +++ b/genesyscloud/outbound_sequence/resource_genesyscloud_outbound_sequence_utils.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_settings/genesyscloud_outbound_settings_proxy.go b/genesyscloud/outbound_settings/genesyscloud_outbound_settings_proxy.go index 7b61cb047..1c30b0a12 100644 --- a/genesyscloud/outbound_settings/genesyscloud_outbound_settings_proxy.go +++ b/genesyscloud/outbound_settings/genesyscloud_outbound_settings_proxy.go @@ -3,7 +3,7 @@ package outbound_settings import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings.go b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings.go index c3e08b656..0febb5174 100644 --- a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings.go +++ b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_schema.go b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_schema.go index 89853a623..e013606ec 100644 --- a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_schema.go +++ b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_schema.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) /* @@ -67,13 +67,13 @@ var ( `earliest_callable_time`: { Description: "The earliest time to dial a contact. Valid format is HH:mm", Optional: true, - ValidateDiagFunc: gcloud.ValidateTimeHHMM, + ValidateDiagFunc: validators.ValidateTimeHHMM, Type: schema.TypeString, }, `latest_callable_time`: { Description: "The latest time to dial a contact. Valid format is HH:mm.", Optional: true, - ValidateDiagFunc: gcloud.ValidateTimeHHMM, + ValidateDiagFunc: validators.ValidateTimeHHMM, Type: schema.TypeString, }, }, @@ -83,13 +83,13 @@ var ( `earliest_callable_time`: { Description: "The earliest time to dial a contact. Valid format is HH:mm.", Optional: true, - ValidateDiagFunc: gcloud.ValidateTimeHHMM, + ValidateDiagFunc: validators.ValidateTimeHHMM, Type: schema.TypeString, }, `latest_callable_time`: { Description: "The latest time to dial a contact. Valid format is HH:mm.", Optional: true, - ValidateDiagFunc: gcloud.ValidateTimeHHMM, + ValidateDiagFunc: validators.ValidateTimeHHMM, Type: schema.TypeString, }, `time_zone_id`: { diff --git a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_utils.go b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_utils.go index 3a277589a..06c3989a6 100644 --- a/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_utils.go +++ b/genesyscloud/outbound_settings/resource_genesyscloud_outbound_settings_utils.go @@ -2,7 +2,7 @@ package outbound_settings import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/tfexporter_state" "terraform-provider-genesyscloud/genesyscloud/util/lists" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" diff --git a/genesyscloud/outbound_wrapupcode_mappings/genesyscloud_wrapupcode_mappings_proxy.go b/genesyscloud/outbound_wrapupcode_mappings/genesyscloud_wrapupcode_mappings_proxy.go index 81986c753..16e688455 100644 --- a/genesyscloud/outbound_wrapupcode_mappings/genesyscloud_wrapupcode_mappings_proxy.go +++ b/genesyscloud/outbound_wrapupcode_mappings/genesyscloud_wrapupcode_mappings_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *outboundWrapupCodeMappingsProxy diff --git a/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcode_mappings_utils.go b/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcode_mappings_utils.go index 4140f32af..1785d9808 100644 --- a/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcode_mappings_utils.go +++ b/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcode_mappings_utils.go @@ -4,7 +4,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // flattenOutboundWrapupCodeMappings maps a Genesys Cloud Wrapupcodemapping to a schema.Set diff --git a/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcodemappings.go b/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcodemappings.go index 97d6d62b5..cccca5eb1 100644 --- a/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcodemappings.go +++ b/genesyscloud/outbound_wrapupcode_mappings/resource_genesyscloud_outbound_wrapupcodemappings.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // getOutboundWrapupCodeMappings is used by the exporter to return all wrapupcode mappings diff --git a/genesyscloud/process_automation_trigger/data_source_genesyscloud_processautomation_trigger.go b/genesyscloud/process_automation_trigger/data_source_genesyscloud_processautomation_trigger.go index 389f39a84..0a8ee565b 100644 --- a/genesyscloud/process_automation_trigger/data_source_genesyscloud_processautomation_trigger.go +++ b/genesyscloud/process_automation_trigger/data_source_genesyscloud_processautomation_trigger.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type ProcessAutomationTriggers struct { diff --git a/genesyscloud/process_automation_trigger/process_automation_triggers_proxy.go b/genesyscloud/process_automation_trigger/process_automation_triggers_proxy.go index 8bf04955e..3f6b07371 100644 --- a/genesyscloud/process_automation_trigger/process_automation_triggers_proxy.go +++ b/genesyscloud/process_automation_trigger/process_automation_triggers_proxy.go @@ -11,7 +11,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func postProcessAutomationTrigger(pat *ProcessAutomationTrigger, api *platformclientv2.IntegrationsApi) (*ProcessAutomationTrigger, *platformclientv2.APIResponse, error) { diff --git a/genesyscloud/process_automation_trigger/process_automations_triggers_struct.go b/genesyscloud/process_automation_trigger/process_automations_triggers_struct.go index 8da8c63f1..539b80dfd 100644 --- a/genesyscloud/process_automation_trigger/process_automations_triggers_struct.go +++ b/genesyscloud/process_automation_trigger/process_automations_triggers_struct.go @@ -3,7 +3,7 @@ package process_automation_trigger import ( "encoding/json" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type ProcessAutomationTrigger struct { diff --git a/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger.go b/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger.go index 440ce5d31..b6878f8a7 100644 --- a/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger.go +++ b/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger.go @@ -12,7 +12,7 @@ import ( "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger_test.go b/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger_test.go index fb52c29d8..e2905376f 100644 --- a/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger_test.go +++ b/genesyscloud/process_automation_trigger/resource_genesyscloud_processautomation_trigger_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceProcessAutomationTrigger(t *testing.T) { diff --git a/genesyscloud/provider/division.go b/genesyscloud/provider/division.go index 5af549cd9..9fefad4a8 100644 --- a/genesyscloud/provider/division.go +++ b/genesyscloud/provider/division.go @@ -2,7 +2,7 @@ package provider import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "sync" ) diff --git a/genesyscloud/provider/provider.go b/genesyscloud/provider/provider.go index fc81e413b..346a29ffb 100644 --- a/genesyscloud/provider/provider.go +++ b/genesyscloud/provider/provider.go @@ -15,7 +15,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func init() { diff --git a/genesyscloud/provider/sdk_client_pool.go b/genesyscloud/provider/sdk_client_pool.go index 9b35c831a..0123f541c 100644 --- a/genesyscloud/provider/sdk_client_pool.go +++ b/genesyscloud/provider/sdk_client_pool.go @@ -8,7 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // SDKClientPool holds a Pool of client configs for the Genesys Cloud SDK. One should be diff --git a/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_init_test.go b/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_init_test.go index aed83d2de..35700f2f1 100644 --- a/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_init_test.go +++ b/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_init_test.go @@ -14,7 +14,7 @@ import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_proxy.go b/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_proxy.go index a5bfe82fa..345294b53 100644 --- a/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_proxy.go +++ b/genesyscloud/recording_media_retention_policy/genesyscloud_recording_media_retention_policy_proxy.go @@ -4,9 +4,10 @@ import ( "context" "encoding/json" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" "net/http" "net/url" + + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy.go b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy.go index 53249f037..fc0777536 100644 --- a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy.go +++ b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_test.go b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_test.go index fe42d0576..0c1b4c0a8 100644 --- a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_test.go +++ b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_utils.go b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_utils.go index 8df77ba79..62037798c 100644 --- a/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_utils.go +++ b/genesyscloud/recording_media_retention_policy/resource_genesyscloud_recording_media_retention_policy_utils.go @@ -10,7 +10,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/resource_cache/datasource_cache.go b/genesyscloud/resource_cache/datasource_cache.go index e430e8731..20559e103 100644 --- a/genesyscloud/resource_cache/datasource_cache.go +++ b/genesyscloud/resource_cache/datasource_cache.go @@ -8,7 +8,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // Cache for Data Sources diff --git a/genesyscloud/resource_exporter/resource_exporter.go b/genesyscloud/resource_exporter/resource_exporter.go index 3bf86c666..81d28fbd1 100644 --- a/genesyscloud/resource_exporter/resource_exporter.go +++ b/genesyscloud/resource_exporter/resource_exporter.go @@ -5,7 +5,7 @@ import ( "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "regexp" "strings" "sync" @@ -103,6 +103,10 @@ type ResourceExporter struct { // By default zero values are removed from the config due to lack of "null" support in the plugin SDK AllowZeroValues []string + // AllowZeroValuesInMap is a list of attributes that are maps. Adding a map attribute to this list indicates to + // the exporter that the values within said map should not be cleaned up if they are zero values + AllowZeroValuesInMap []string + // AllowEmptyArrays is a list of List attributes that should allow empty arrays in export. // By default, empty arrays are removed but some array attributes may be required in the schema // or depending on the API behavior better presented explicitly in the API as empty arrays. @@ -195,6 +199,10 @@ func (r *ResourceExporter) AllowForZeroValues(attribute string) bool { return lists.ItemInSlice(attribute, r.AllowZeroValues) } +func (r *ResourceExporter) AllowForZeroValuesInMap(attribute string) bool { + return lists.ItemInSlice(attribute, r.AllowZeroValuesInMap) +} + func (r *ResourceExporter) AllowForEmptyArrays(attribute string) bool { return lists.ItemInSlice(attribute, r.AllowEmptyArrays) } diff --git a/genesyscloud/resource_exporter/resource_exporter_custom.go b/genesyscloud/resource_exporter/resource_exporter_custom.go index a017efc15..70c976f12 100644 --- a/genesyscloud/resource_exporter/resource_exporter_custom.go +++ b/genesyscloud/resource_exporter/resource_exporter_custom.go @@ -3,7 +3,7 @@ package resource_exporter import ( "encoding/json" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "regexp" "strings" @@ -139,7 +139,8 @@ This customer custom router will look at the skills array if present and resolve func RuleSetSkillPropertyResolver(configMap map[string]interface{}, exporters map[string]*ResourceExporter, resourceName string) error { if exporter, ok := exporters["genesyscloud_routing_skill"]; ok { - skillIDs := configMap["skills"].(string) + + skillIDs, _ := configMap["skills"].(string) if len(skillIDs) == 0 { return nil @@ -192,7 +193,8 @@ func CampaignStatusResolver(configMap map[string]interface{}, exporters map[stri } func ReplyEmailAddressSelfReferenceRouteExporterResolver(configMap map[string]interface{}, exporters map[string]*ResourceExporter, resourceName string) error { - routeId := configMap["route_id"].(string) + + routeId, _ := configMap["route_id"].(string) currentRouteReference := fmt.Sprintf("${genesyscloud_routing_email_route.%s.id}", resourceName) if routeId == currentRouteReference { configMap["self_reference_route"] = true diff --git a/genesyscloud/resource_genesyscloud_architect_schedules.go b/genesyscloud/resource_genesyscloud_architect_schedules.go index 2b8184874..e8feb700c 100644 --- a/genesyscloud/resource_genesyscloud_architect_schedules.go +++ b/genesyscloud/resource_genesyscloud_architect_schedules.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/leekchan/timeutil" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllArchitectSchedules(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_auth_division.go b/genesyscloud/resource_genesyscloud_auth_division.go index 7c0fe5745..557ba05d2 100644 --- a/genesyscloud/resource_genesyscloud_auth_division.go +++ b/genesyscloud/resource_genesyscloud_auth_division.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllAuthDivisions(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_auth_division_test.go b/genesyscloud/resource_genesyscloud_auth_division_test.go index 033097f4c..cebf83c42 100644 --- a/genesyscloud/resource_genesyscloud_auth_division_test.go +++ b/genesyscloud/resource_genesyscloud_auth_division_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceAuthDivisionBasic(t *testing.T) { @@ -30,6 +30,9 @@ func TestAccResourceAuthDivisionBasic(t *testing.T) { ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), Steps: []resource.TestStep{ { + PreConfig: func() { + time.Sleep(30 * time.Second) + }, // Create Config: GenerateAuthDivisionResource( divResource1, diff --git a/genesyscloud/resource_genesyscloud_idp_generic.go b/genesyscloud/resource_genesyscloud_idp_generic.go index e56c62d0f..8db0dad77 100644 --- a/genesyscloud/resource_genesyscloud_idp_generic.go +++ b/genesyscloud/resource_genesyscloud_idp_generic.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllIdpGeneric(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_idp_generic_test.go b/genesyscloud/resource_genesyscloud_idp_generic_test.go index a78c79e70..6043d440d 100644 --- a/genesyscloud/resource_genesyscloud_idp_generic_test.go +++ b/genesyscloud/resource_genesyscloud_idp_generic_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpGeneric(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_idp_gsuite.go b/genesyscloud/resource_genesyscloud_idp_gsuite.go index 007c6b272..75a412cdc 100644 --- a/genesyscloud/resource_genesyscloud_idp_gsuite.go +++ b/genesyscloud/resource_genesyscloud_idp_gsuite.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllIdpGsuite(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_idp_gsuite_test.go b/genesyscloud/resource_genesyscloud_idp_gsuite_test.go index 3878a5764..38e02fab6 100644 --- a/genesyscloud/resource_genesyscloud_idp_gsuite_test.go +++ b/genesyscloud/resource_genesyscloud_idp_gsuite_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpGsuite(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_idp_onelogin.go b/genesyscloud/resource_genesyscloud_idp_onelogin.go index 08a92192f..8191969da 100644 --- a/genesyscloud/resource_genesyscloud_idp_onelogin.go +++ b/genesyscloud/resource_genesyscloud_idp_onelogin.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllIdpOnelogin(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_idp_onelogin_test.go b/genesyscloud/resource_genesyscloud_idp_onelogin_test.go index 023d7df55..fcd55469b 100644 --- a/genesyscloud/resource_genesyscloud_idp_onelogin_test.go +++ b/genesyscloud/resource_genesyscloud_idp_onelogin_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpOnelogin(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_idp_ping.go b/genesyscloud/resource_genesyscloud_idp_ping.go index 64a5140a1..5be98daf0 100644 --- a/genesyscloud/resource_genesyscloud_idp_ping.go +++ b/genesyscloud/resource_genesyscloud_idp_ping.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllIdpPing(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_idp_ping_test.go b/genesyscloud/resource_genesyscloud_idp_ping_test.go index d87e59944..1211c8230 100644 --- a/genesyscloud/resource_genesyscloud_idp_ping_test.go +++ b/genesyscloud/resource_genesyscloud_idp_ping_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceIdpPing(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_init.go b/genesyscloud/resource_genesyscloud_init.go index 8ca8476fa..d526a8439 100644 --- a/genesyscloud/resource_genesyscloud_init.go +++ b/genesyscloud/resource_genesyscloud_init.go @@ -30,11 +30,9 @@ func registerDataSources(l registrar.Registrar) { l.RegisterDataSource("genesyscloud_quality_forms_evaluation", DataSourceQualityFormsEvaluations()) l.RegisterDataSource("genesyscloud_quality_forms_survey", dataSourceQualityFormsSurvey()) l.RegisterDataSource("genesyscloud_routing_language", dataSourceRoutingLanguage()) - l.RegisterDataSource("genesyscloud_routing_settings", dataSourceRoutingSettings()) l.RegisterDataSource("genesyscloud_routing_skill", dataSourceRoutingSkill()) l.RegisterDataSource("genesyscloud_routing_skill_group", dataSourceRoutingSkillGroup()) l.RegisterDataSource("genesyscloud_routing_email_domain", DataSourceRoutingEmailDomain()) - l.RegisterDataSource("genesyscloud_routing_utilization_label", dataSourceRoutingUtilizationLabel()) l.RegisterDataSource("genesyscloud_routing_wrapupcode", DataSourceRoutingWrapupcode()) l.RegisterDataSource("genesyscloud_user", DataSourceUser()) l.RegisterDataSource("genesyscloud_widget_deployment", dataSourceWidgetDeployments()) @@ -66,9 +64,6 @@ func registerResources(l registrar.Registrar) { l.RegisterResource("genesyscloud_routing_language", ResourceRoutingLanguage()) l.RegisterResource("genesyscloud_routing_skill", ResourceRoutingSkill()) l.RegisterResource("genesyscloud_routing_skill_group", ResourceRoutingSkillGroup()) - l.RegisterResource("genesyscloud_routing_settings", ResourceRoutingSettings()) - l.RegisterResource("genesyscloud_routing_utilization", ResourceRoutingUtilization()) - l.RegisterResource("genesyscloud_routing_utilization_label", ResourceRoutingUtilizationLabel()) l.RegisterResource("genesyscloud_routing_wrapupcode", ResourceRoutingWrapupCode()) l.RegisterResource("genesyscloud_user", ResourceUser()) l.RegisterResource("genesyscloud_widget_deployment", ResourceWidgetDeployment()) @@ -93,11 +88,8 @@ func registerExporters(l registrar.Registrar) { l.RegisterExporter("genesyscloud_quality_forms_survey", SurveyFormExporter()) l.RegisterExporter("genesyscloud_routing_email_domain", RoutingEmailDomainExporter()) l.RegisterExporter("genesyscloud_routing_language", RoutingLanguageExporter()) - l.RegisterExporter("genesyscloud_routing_settings", RoutingSettingsExporter()) l.RegisterExporter("genesyscloud_routing_skill", RoutingSkillExporter()) l.RegisterExporter("genesyscloud_routing_skill_group", ResourceSkillGroupExporter()) - l.RegisterExporter("genesyscloud_routing_utilization", RoutingUtilizationExporter()) - l.RegisterExporter("genesyscloud_routing_utilization_label", RoutingUtilizationLabelExporter()) l.RegisterExporter("genesyscloud_routing_wrapupcode", RoutingWrapupCodeExporter()) l.RegisterExporter("genesyscloud_user", UserExporter()) l.RegisterExporter("genesyscloud_widget_deployment", WidgetDeploymentExporter()) diff --git a/genesyscloud/resource_genesyscloud_init_test.go b/genesyscloud/resource_genesyscloud_init_test.go index 0988af4f8..79c141fed 100644 --- a/genesyscloud/resource_genesyscloud_init_test.go +++ b/genesyscloud/resource_genesyscloud_init_test.go @@ -9,10 +9,13 @@ import ( "terraform-provider-genesyscloud/genesyscloud/group" "terraform-provider-genesyscloud/genesyscloud/provider" routingQueue "terraform-provider-genesyscloud/genesyscloud/routing_queue" + routingSettings "terraform-provider-genesyscloud/genesyscloud/routing_settings" + routingUtilization "terraform-provider-genesyscloud/genesyscloud/routing_utilization" + routingUtilizationLabel "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( @@ -58,14 +61,14 @@ func (r *registerTestInstance) registerTestResources() { providerResources["genesyscloud_routing_language"] = ResourceRoutingLanguage() providerResources["genesyscloud_routing_skill"] = ResourceRoutingSkill() providerResources["genesyscloud_routing_skill_group"] = ResourceRoutingSkillGroup() - providerResources["genesyscloud_routing_settings"] = ResourceRoutingSettings() - providerResources["genesyscloud_routing_utilization"] = ResourceRoutingUtilization() - providerResources["genesyscloud_routing_utilization_label"] = ResourceRoutingUtilizationLabel() + providerResources["genesyscloud_routing_settings"] = routingSettings.ResourceRoutingSettings() + providerResources["genesyscloud_routing_utilization"] = routingUtilization.ResourceRoutingUtilization() providerResources["genesyscloud_routing_wrapupcode"] = ResourceRoutingWrapupCode() providerResources["genesyscloud_user"] = ResourceUser() providerResources["genesyscloud_widget_deployment"] = ResourceWidgetDeployment() providerResources["genesyscloud_architect_schedulegroups"] = archScheduleGroup.ResourceArchitectSchedulegroups() providerResources["genesyscloud_architect_schedules"] = architectSchedules.ResourceArchitectSchedules() + providerResources["genesyscloud_routing_utilization_label"] = routingUtilizationLabel.ResourceRoutingUtilizationLabel() } @@ -94,15 +97,13 @@ func (r *registerTestInstance) registerTestDataSources() { providerDataSources["genesyscloud_quality_forms_evaluation"] = DataSourceQualityFormsEvaluations() providerDataSources["genesyscloud_quality_forms_survey"] = dataSourceQualityFormsSurvey() providerDataSources["genesyscloud_routing_language"] = dataSourceRoutingLanguage() - providerDataSources["genesyscloud_routing_settings"] = dataSourceRoutingSettings() providerDataSources["genesyscloud_routing_skill"] = dataSourceRoutingSkill() providerDataSources["genesyscloud_routing_skill_group"] = dataSourceRoutingSkillGroup() providerDataSources["genesyscloud_routing_email_domain"] = DataSourceRoutingEmailDomain() - providerDataSources["genesyscloud_routing_utilization_label"] = dataSourceRoutingUtilizationLabel() providerDataSources["genesyscloud_routing_wrapupcode"] = DataSourceRoutingWrapupcode() providerDataSources["genesyscloud_user"] = DataSourceUser() providerDataSources["genesyscloud_widget_deployment"] = dataSourceWidgetDeployments() - + providerResources["genesyscloud_routing_utilization_label"] = routingUtilizationLabel.DataSourceRoutingUtilizationLabel() } func initTestResources() { diff --git a/genesyscloud/resource_genesyscloud_journey_action_map.go b/genesyscloud/resource_genesyscloud_journey_action_map.go index 76db967b7..7e1c583f0 100644 --- a/genesyscloud/resource_genesyscloud_journey_action_map.go +++ b/genesyscloud/resource_genesyscloud_journey_action_map.go @@ -25,7 +25,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_journey_action_map_test.go b/genesyscloud/resource_genesyscloud_journey_action_map_test.go index f0753a13e..22fa108ea 100644 --- a/genesyscloud/resource_genesyscloud_journey_action_map_test.go +++ b/genesyscloud/resource_genesyscloud_journey_action_map_test.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const resourceName = "genesyscloud_journey_action_map" diff --git a/genesyscloud/resource_genesyscloud_journey_action_template.go b/genesyscloud/resource_genesyscloud_journey_action_template.go index 243f1d4bb..ecd418113 100644 --- a/genesyscloud/resource_genesyscloud_journey_action_template.go +++ b/genesyscloud/resource_genesyscloud_journey_action_template.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_journey_action_template_test.go b/genesyscloud/resource_genesyscloud_journey_action_template_test.go index ae33a8b3b..dd0cc9444 100644 --- a/genesyscloud/resource_genesyscloud_journey_action_template_test.go +++ b/genesyscloud/resource_genesyscloud_journey_action_template_test.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ActionTemplateResourceName = "genesyscloud_journey_action_template" diff --git a/genesyscloud/resource_genesyscloud_journey_outcome.go b/genesyscloud/resource_genesyscloud_journey_outcome.go index 8e163d2bd..40a1019ff 100644 --- a/genesyscloud/resource_genesyscloud_journey_outcome.go +++ b/genesyscloud/resource_genesyscloud_journey_outcome.go @@ -22,7 +22,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_journey_outcome_test.go b/genesyscloud/resource_genesyscloud_journey_outcome_test.go index 77fc9ba2f..5f52a59bd 100644 --- a/genesyscloud/resource_genesyscloud_journey_outcome_test.go +++ b/genesyscloud/resource_genesyscloud_journey_outcome_test.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceJourneyOutcome(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_journey_segment.go b/genesyscloud/resource_genesyscloud_journey_segment.go index 579f2c9ba..453d1191e 100644 --- a/genesyscloud/resource_genesyscloud_journey_segment.go +++ b/genesyscloud/resource_genesyscloud_journey_segment.go @@ -22,7 +22,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( @@ -53,7 +53,7 @@ var ( }(), ""), }, "scope": { - Description: "The target entity that a segment applies to.Valid values: Session, Customer. Changing the scope attribute will cause the existing journey_segment to be dropped and recreated with new ID.", + Description: "The target entity that a segment applies to. Valid values: Session", Type: schema.TypeString, Required: true, ForceNew: true, // scope can be only set during creation @@ -63,7 +63,6 @@ var ( Description: "Whether or not the segment should be displayed to agent/supervisor users.", Type: schema.TypeBool, Optional: true, - // Customer scope only supports false for this value }, "context": { Description: "The context of the segment.", diff --git a/genesyscloud/resource_genesyscloud_journey_segment_test.go b/genesyscloud/resource_genesyscloud_journey_segment_test.go index 165aa683b..7e0946b52 100644 --- a/genesyscloud/resource_genesyscloud_journey_segment_test.go +++ b/genesyscloud/resource_genesyscloud_journey_segment_test.go @@ -2,7 +2,6 @@ package genesyscloud import ( "fmt" - "github.com/google/uuid" "log" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" @@ -13,15 +12,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) -func TestAccResourceJourneySegmentCustomer(t *testing.T) { - runResourceJourneySegmentTestCase(t, "basic_customer_attributes") -} - -func TestAccResourceJourneySegmentSession(t *testing.T) { - runResourceJourneySegmentTestCase(t, "basic_session_attributes") +func TestAccResourceJourneySegment(t *testing.T) { + runResourceJourneySegmentTestCase(t, "basic_attributes") } func TestAccResourceJourneySegmentContextOnly(t *testing.T) { @@ -56,30 +51,36 @@ func setupJourneySegment(t *testing.T, testCaseName string) { func cleanupJourneySegments(idPrefix string) { journeyApi := platformclientv2.NewJourneyApiWithConfig(sdkConfig) - pageCount := 1 // Needed because of broken journey common paging - for pageNum := 1; pageNum <= pageCount; pageNum++ { - const pageSize = 100 + segmentsToDelete := make([]platformclientv2.Journeysegment, 0) + + // go through all segments to find those to delete + const pageSize = 200 + for pageNum := 1; ; pageNum++ { journeySegments, _, getErr := journeyApi.GetJourneySegments("", pageSize, pageNum, true, nil, nil, "") if getErr != nil { + log.Printf("failed to get page %v of journeySegments: %v", pageNum, getErr) return } - if journeySegments.Entities == nil || len(*journeySegments.Entities) == 0 { - break - } - for _, journeySegment := range *journeySegments.Entities { if journeySegment.DisplayName != nil && strings.HasPrefix(*journeySegment.DisplayName, idPrefix) { - _, delErr := journeyApi.DeleteJourneySegment(*journeySegment.Id) - if delErr != nil { - util.BuildDiagnosticError("genesyscloud_journey_segment", fmt.Sprintf("failed to delete journey segment %s (%s)", *journeySegment.Id, *journeySegment.DisplayName), delErr) - return - } - log.Printf("Deleted journey segment %s (%s)", *journeySegment.Id, *journeySegment.DisplayName) + segmentsToDelete = append(segmentsToDelete, journeySegment) } } - pageCount = *journeySegments.PageCount + if *journeySegments.PageNumber >= *journeySegments.PageCount { + break + } + } + + // delete them + for _, journeySegment := range segmentsToDelete { + _, delErr := journeyApi.DeleteJourneySegment(*journeySegment.Id) + if delErr != nil { + util.BuildDiagnosticError("genesyscloud_journey_segment", fmt.Sprintf("failed to delete journey segment %s (%s)", *journeySegment.Id, *journeySegment.DisplayName), delErr) + return + } + log.Printf("Deleted journey segment %s (%s)", *journeySegment.Id, *journeySegment.DisplayName) } } @@ -106,36 +107,3 @@ func testVerifyJourneySegmentsDestroyed(state *terraform.State) error { // Success. All Journey segment destroyed return nil } - -func customerSegmentationIsSupported(t *testing.T) (bool, string) { - segmentRequest := platformclientv2.Journeysegmentrequest{ - DisplayName: platformclientv2.String("terraform_test_" + uuid.NewString()), - Color: platformclientv2.String("#008000"), - Scope: platformclientv2.String("Customer"), - ShouldDisplayToAgent: platformclientv2.Bool(false), - ExternalSegment: &platformclientv2.Requestexternalsegment{ - Id: platformclientv2.String("4654654654"), - Name: platformclientv2.String("external segment name"), - Source: platformclientv2.String("AdobeExperiencePlatform"), - }, - } - - apiInstance := platformclientv2.NewJourneyApiWithConfig(sdkConfig) - segment, response, err := apiInstance.PostJourneySegments(segmentRequest) - if err != nil { - if response != nil && response.StatusCode == 501 && strings.Contains(response.ErrorMessage, "not currently supported") { - return false, response.ErrorMessage - } - t.Logf("failed to create segment inside method customerSegmentationIsSupported: %v", err) - return true, "" - } - - t.Logf("Customer segmentation has been implemented.") - - // cleanup segment - if _, err := apiInstance.DeleteJourneySegment(*segment.Id); err != nil { - t.Logf("failed to cleanup segment inside method customerSegmentationIsSupported. Segment ID: '%s'. Error: '%v'", *segment.Id, err) - } - - return true, "" -} diff --git a/genesyscloud/resource_genesyscloud_knowledge_category.go b/genesyscloud/resource_genesyscloud_knowledge_category.go index 5f302d90f..dc097759d 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_category.go +++ b/genesyscloud/resource_genesyscloud_knowledge_category.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_category_test.go b/genesyscloud/resource_genesyscloud_knowledge_category_test.go index 0b4484661..06ca7764f 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_category_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_category_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceKnowledgeCategoryBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_document.go b/genesyscloud/resource_genesyscloud_knowledge_document.go index b11bb00c3..7c91e51bf 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_document.go +++ b/genesyscloud/resource_genesyscloud_knowledge_document.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_document_test.go b/genesyscloud/resource_genesyscloud_knowledge_document_test.go index 33c78b2a8..0e47251ac 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_document_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_document_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceKnowledgeDocumentBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_document_variation.go b/genesyscloud/resource_genesyscloud_knowledge_document_variation.go index 9b55dc283..b0ed284f2 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_document_variation.go +++ b/genesyscloud/resource_genesyscloud_knowledge_document_variation.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_document_variation_test.go b/genesyscloud/resource_genesyscloud_knowledge_document_variation_test.go index 68e05a00b..72e6fbfc4 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_document_variation_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_document_variation_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceKnowledgeDocumentVariationBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_knowledgebase.go b/genesyscloud/resource_genesyscloud_knowledge_knowledgebase.go index 0c549673a..4e824d71e 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_knowledgebase.go +++ b/genesyscloud/resource_genesyscloud_knowledge_knowledgebase.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllKnowledgeKnowledgebases(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_knowledgebase_test.go b/genesyscloud/resource_genesyscloud_knowledge_knowledgebase_test.go index 896cf6fce..798715ee1 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_knowledgebase_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_knowledgebase_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceKnowledgeKnowledgebaseBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_label.go b/genesyscloud/resource_genesyscloud_knowledge_label.go index 6e439d2b9..9b622e0ae 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_label.go +++ b/genesyscloud/resource_genesyscloud_knowledge_label.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_label_test.go b/genesyscloud/resource_genesyscloud_knowledge_label_test.go index ef825655b..146fa7f36 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_label_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_label_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceKnowledgeLabelBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_v1_category.go b/genesyscloud/resource_genesyscloud_knowledge_v1_category.go index 6cb614dac..b5af3291e 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_v1_category.go +++ b/genesyscloud/resource_genesyscloud_knowledge_v1_category.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_v1_category_test.go b/genesyscloud/resource_genesyscloud_knowledge_v1_category_test.go index b6f7b76d9..578c23b26 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_v1_category_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_v1_category_test.go @@ -8,7 +8,7 @@ package genesyscloud // "github.com/google/uuid" // "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" // "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" -// "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" +// "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" // ) // func TestAccResourceKnowledgeV1CategoryBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_knowledge_v1_document.go b/genesyscloud/resource_genesyscloud_knowledge_v1_document.go index 6e9a363ad..a87a90384 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_v1_document.go +++ b/genesyscloud/resource_genesyscloud_knowledge_v1_document.go @@ -22,7 +22,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_knowledge_v1_document_test.go b/genesyscloud/resource_genesyscloud_knowledge_v1_document_test.go index 38266012f..b9ef197c6 100644 --- a/genesyscloud/resource_genesyscloud_knowledge_v1_document_test.go +++ b/genesyscloud/resource_genesyscloud_knowledge_v1_document_test.go @@ -8,7 +8,7 @@ package genesyscloud // "github.com/google/uuid" // "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" // "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" -// "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" +// "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" // ) // func TestAccResourceKnowledgeV1DocumentBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_location.go b/genesyscloud/resource_genesyscloud_location.go index 693d9c7f5..eb2ac88e0 100644 --- a/genesyscloud/resource_genesyscloud_location.go +++ b/genesyscloud/resource_genesyscloud_location.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/nyaruka/phonenumbers" ) diff --git a/genesyscloud/resource_genesyscloud_location_test.go b/genesyscloud/resource_genesyscloud_location_test.go index db2a7036b..b34a8c149 100644 --- a/genesyscloud/resource_genesyscloud_location_test.go +++ b/genesyscloud/resource_genesyscloud_location_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceLocationBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_quality_forms_evaluation.go b/genesyscloud/resource_genesyscloud_quality_forms_evaluation.go index e037532e6..b048bda93 100644 --- a/genesyscloud/resource_genesyscloud_quality_forms_evaluation.go +++ b/genesyscloud/resource_genesyscloud_quality_forms_evaluation.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/resource_genesyscloud_quality_forms_evaluation_test.go b/genesyscloud/resource_genesyscloud_quality_forms_evaluation_test.go index da3edc9e7..bceeeff41 100644 --- a/genesyscloud/resource_genesyscloud_quality_forms_evaluation_test.go +++ b/genesyscloud/resource_genesyscloud_quality_forms_evaluation_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceEvaluationFormBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_quality_forms_survey.go b/genesyscloud/resource_genesyscloud_quality_forms_survey.go index fe3f68747..a8941b378 100644 --- a/genesyscloud/resource_genesyscloud_quality_forms_survey.go +++ b/genesyscloud/resource_genesyscloud_quality_forms_survey.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type SurveyFormStruct struct { diff --git a/genesyscloud/resource_genesyscloud_quality_forms_survey_test.go b/genesyscloud/resource_genesyscloud_quality_forms_survey_test.go index 774504d74..cf763718c 100644 --- a/genesyscloud/resource_genesyscloud_quality_forms_survey_test.go +++ b/genesyscloud/resource_genesyscloud_quality_forms_survey_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceSurveyFormBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_routing_email_domain.go b/genesyscloud/resource_genesyscloud_routing_email_domain.go index 9d1115f5d..e17c91191 100644 --- a/genesyscloud/resource_genesyscloud_routing_email_domain.go +++ b/genesyscloud/resource_genesyscloud_routing_email_domain.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllRoutingEmailDomains(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_routing_email_domain_test.go b/genesyscloud/resource_genesyscloud_routing_email_domain_test.go index 7b2684574..016f54c20 100644 --- a/genesyscloud/resource_genesyscloud_routing_email_domain_test.go +++ b/genesyscloud/resource_genesyscloud_routing_email_domain_test.go @@ -16,7 +16,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingEmailDomainSub(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_routing_language.go b/genesyscloud/resource_genesyscloud_routing_language.go index bb08ca53e..e30132331 100644 --- a/genesyscloud/resource_genesyscloud_routing_language.go +++ b/genesyscloud/resource_genesyscloud_routing_language.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllRoutingLanguages(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_routing_language_test.go b/genesyscloud/resource_genesyscloud_routing_language_test.go index 228fd997d..a3f416a09 100644 --- a/genesyscloud/resource_genesyscloud_routing_language_test.go +++ b/genesyscloud/resource_genesyscloud_routing_language_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingLanguageBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_routing_settings.go b/genesyscloud/resource_genesyscloud_routing_settings.go deleted file mode 100644 index 0e79aff55..000000000 --- a/genesyscloud/resource_genesyscloud_routing_settings.go +++ /dev/null @@ -1,308 +0,0 @@ -package genesyscloud - -import ( - "context" - "fmt" - "log" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" - "terraform-provider-genesyscloud/genesyscloud/util/constants" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - - "terraform-provider-genesyscloud/genesyscloud/consistency_checker" - - resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" -) - -func ResourceRoutingSettings() *schema.Resource { - return &schema.Resource{ - Description: "An organization's routing settings", - - CreateContext: provider.CreateWithPooledClient(createRoutingSettings), - ReadContext: provider.ReadWithPooledClient(readRoutingSettings), - UpdateContext: provider.UpdateWithPooledClient(updateRoutingSettings), - DeleteContext: provider.DeleteWithPooledClient(deleteRoutingSettings), - Importer: &schema.ResourceImporter{ - StateContext: schema.ImportStatePassthroughContext, - }, - SchemaVersion: 1, - Schema: map[string]*schema.Schema{ - "reset_agent_on_presence_change": { - Description: "Reset agent score when agent presence changes from off-queue to on-queue", - Type: schema.TypeBool, - Optional: true, - Computed: true, - }, - "contactcenter": { - Description: "Contact center settings", - Type: schema.TypeList, - Optional: true, - Computed: true, - MaxItems: 1, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "remove_skills_from_blind_transfer": { - Description: "Strip skills from transfer", - Type: schema.TypeBool, - Optional: true, - }, - }, - }, - }, - "transcription": { - Description: "Transcription settings", - Type: schema.TypeList, - Optional: true, - Computed: true, - MaxItems: 1, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "transcription": { - Description: "Setting to enable/disable transcription capability.Valid values: Disabled, EnabledGlobally, EnabledQueueFlow", - Type: schema.TypeString, - Optional: true, - }, - "transcription_confidence_threshold": { - Description: "Configure confidence threshold. The possible values are from 1 to 100", - Type: schema.TypeInt, - Optional: true, - }, - "low_latency_transcription_enabled": { - Description: "Boolean flag indicating whether low latency transcription via Notification API is enabled", - Type: schema.TypeBool, - Optional: true, - }, - "content_search_enabled": { - Description: "Setting to enable/disable content search", - Type: schema.TypeBool, - Optional: true, - }, - }, - }, - }, - }, - } -} - -func getAllRoutingSettings(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { - resources := make(resourceExporter.ResourceIDMetaMap) - resources["0"] = &resourceExporter.ResourceMeta{Name: "routing_settings"} - return resources, nil -} - -func RoutingSettingsExporter() *resourceExporter.ResourceExporter { - return &resourceExporter.ResourceExporter{ - GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingSettings), - RefAttrs: map[string]*resourceExporter.RefAttrSettings{}, // No references - } -} - -func createRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - log.Printf("Creating Routing Setting") - d.SetId("settings") - return updateRoutingSettings(ctx, d, meta) -} - -func readRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingSettings(), constants.DefaultConsistencyChecks, "genesyscloud_routing_settings") - - log.Printf("Reading setting: %s", d.Id()) - return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { - settings, resp, getErr := routingAPI.GetRoutingSettings() - - if getErr != nil { - if util.IsStatus404(resp) { - //createRoutingSettings(ctx, d, meta) - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to read Routing Setting %s | error: %s", d.Id(), getErr), resp)) - } - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to read Routing Setting %s | error: %s", d.Id(), getErr), resp)) - } - - if settings.ResetAgentScoreOnPresenceChange != nil { - d.Set("reset_agent_on_presence_change", *settings.ResetAgentScoreOnPresenceChange) - } else { - d.Set("reset_agent_on_presence_change", nil) - } - - if diagErr := readRoutingSettingsContactCenter(d, routingAPI); diagErr != nil { - return retry.NonRetryableError(fmt.Errorf("%v", diagErr)) - } - - if diagErr := readRoutingSettingsTranscription(d, routingAPI); diagErr != nil { - return retry.NonRetryableError(fmt.Errorf("%v", diagErr)) - } - - log.Printf("Read Routing Setting") - return cc.CheckState(d) - }) -} - -func updateRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - resetAgentOnPresenceChange := d.Get("reset_agent_on_presence_change").(bool) - - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - log.Printf("Updating Routing Settings") - update := platformclientv2.Routingsettings{ - ResetAgentScoreOnPresenceChange: &resetAgentOnPresenceChange, - } - - diagErr := updateContactCenter(d, routingAPI) - if diagErr != nil { - return diagErr - } - - diagErr = updateTranscription(d, routingAPI) - if diagErr != nil { - return diagErr - } - - _, resp, err := routingAPI.PutRoutingSettings(update) - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to update routing settings %s error: %s", d.Id(), err), resp) - } - - time.Sleep(5 * time.Second) - - log.Printf("Updated Routing Settings") - return readRoutingSettings(ctx, d, meta) -} - -func deleteRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - log.Printf("Resetting Routing Setting") - resp, err := routingAPI.DeleteRoutingSettings() - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to delete routing settings error: %s", err), resp) - } - log.Printf("Reset Routing Settings") - return nil -} - -func readRoutingSettingsContactCenter(d *schema.ResourceData, routingAPI *platformclientv2.RoutingApi) diag.Diagnostics { - contactcenter, resp, getErr := routingAPI.GetRoutingSettingsContactcenter() - if getErr != nil { - if util.IsStatus404(resp) { - return nil - } - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to read contact center for routing setting %s error: %s", d.Id(), getErr), resp) - } - - if contactcenter == nil { - d.Set("contactcenter", nil) - return nil - } - - contactSettings := make(map[string]interface{}) - - if contactcenter.RemoveSkillsFromBlindTransfer != nil { - contactSettings["remove_skills_from_blind_transfer"] = *contactcenter.RemoveSkillsFromBlindTransfer - } - - d.Set("contactcenter", []interface{}{contactSettings}) - return nil -} - -func readRoutingSettingsTranscription(d *schema.ResourceData, routingAPI *platformclientv2.RoutingApi) diag.Diagnostics { - transcription, resp, getErr := routingAPI.GetRoutingSettingsTranscription() - if getErr != nil { - if util.IsStatus404(resp) { - return nil - } - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to read contact center for routing settings %s error: %s", d.Id(), getErr), resp) - } - - if transcription == nil { - d.Set("transcription", nil) - return nil - } - - transcriptionSettings := make(map[string]interface{}) - - if transcription.Transcription != nil { - transcriptionSettings["transcription"] = *transcription.Transcription - } - if transcription.TranscriptionConfidenceThreshold != nil { - transcriptionSettings["transcription_confidence_threshold"] = *transcription.TranscriptionConfidenceThreshold - } - if transcription.LowLatencyTranscriptionEnabled != nil { - transcriptionSettings["low_latency_transcription_enabled"] = *transcription.LowLatencyTranscriptionEnabled - } - if transcription.ContentSearchEnabled != nil { - transcriptionSettings["content_search_enabled"] = *transcription.ContentSearchEnabled - } - - d.Set("transcription", []interface{}{transcriptionSettings}) - return nil -} - -func updateContactCenter(d *schema.ResourceData, routingAPI *platformclientv2.RoutingApi) diag.Diagnostics { - var removeSkillsFromBlindTransfer bool - - if contactCenterConfig := d.Get("contactcenter"); contactCenterConfig != nil { - if contactCenterList := contactCenterConfig.([]interface{}); len(contactCenterList) > 0 { - contactCenterMap := contactCenterList[0].(map[string]interface{}) - - if contactCenterMap["remove_skills_from_blind_transfer"] != nil { - removeSkillsFromBlindTransfer = contactCenterMap["remove_skills_from_blind_transfer"].(bool) - } - resp, err := routingAPI.PatchRoutingSettingsContactcenter(platformclientv2.Contactcentersettings{ - RemoveSkillsFromBlindTransfer: &removeSkillsFromBlindTransfer, - }) - - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to update contact center for routing settings %s error: %s", d.Id(), err), resp) - } - } - } - return nil -} - -func updateTranscription(d *schema.ResourceData, routingAPI *platformclientv2.RoutingApi) diag.Diagnostics { - if transcriptionConfig := d.Get("transcription"); transcriptionConfig != nil { - if transcriptionList := transcriptionConfig.([]interface{}); len(transcriptionList) > 0 { - transcriptionMap := transcriptionList[0].(map[string]interface{}) - - var transcription string - var transcriptionConfidenceThreshold int - var lowLatencyTranscriptionEnabled bool - var contentSearchEnabled bool - - if transcriptionMap["transcription"] != nil { - transcription = transcriptionMap["transcription"].(string) - } - if transcriptionMap["transcription_confidence_threshold"] != nil { - transcriptionConfidenceThreshold = transcriptionMap["transcription_confidence_threshold"].(int) - } - if transcriptionMap["low_latency_transcription_enabled"] != nil { - lowLatencyTranscriptionEnabled = transcriptionMap["low_latency_transcription_enabled"].(bool) - } - if transcriptionMap["content_search_enabled"] != nil { - contentSearchEnabled = transcriptionMap["content_search_enabled"].(bool) - } - - _, resp, err := routingAPI.PutRoutingSettingsTranscription(platformclientv2.Transcriptionsettings{ - Transcription: &transcription, - TranscriptionConfidenceThreshold: &transcriptionConfidenceThreshold, - LowLatencyTranscriptionEnabled: &lowLatencyTranscriptionEnabled, - ContentSearchEnabled: &contentSearchEnabled, - }) - - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_settings", fmt.Sprintf("Failed to update Transcription for routing settings %s error: %s", d.Id(), err), resp) - } - } - } - return nil -} diff --git a/genesyscloud/resource_genesyscloud_routing_skill.go b/genesyscloud/resource_genesyscloud_routing_skill.go index d0ac11e3e..91ccf0574 100644 --- a/genesyscloud/resource_genesyscloud_routing_skill.go +++ b/genesyscloud/resource_genesyscloud_routing_skill.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllRoutingSkills(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_routing_skill_group.go b/genesyscloud/resource_genesyscloud_routing_skill_group.go index b91cbd6d4..6508806de 100644 --- a/genesyscloud/resource_genesyscloud_routing_skill_group.go +++ b/genesyscloud/resource_genesyscloud_routing_skill_group.go @@ -21,7 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type SkillGroupsRequest struct { @@ -34,54 +34,18 @@ type SkillGroupsRequest struct { SkillConditions struct{} `json:"skillConditions"` //Keep this here. Even though we do not use this field in the struct The generated attributed is used as a placeholder } -type AllSkillGroups struct { - Entities []struct { - ID string `json:"id"` - Name string `json:"name"` - } - NextURI string `json:"nextUri"` - SelfURI string `json:"selfUri"` - PreviousURI string `json:"previousUri"` -} - -func getAllSkillGroups(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { +func getAllSkillGroups(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { resources := make(resourceExporter.ResourceIDMetaMap) routingAPI := platformclientv2.NewRoutingApiWithConfig(clientConfig) - apiClient := &routingAPI.Configuration.APIClient - route := "/api/v2/routing/skillgroups" - - headerParams := buildHeaderParams(routingAPI) - - for { - path := routingAPI.Configuration.BasePath + route - skillGroupPayload := &AllSkillGroups{} - - response, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) - - if err != nil { - return nil, util.BuildAPIDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to get page of skill groups error: %s", err), response) - } - - err = json.Unmarshal(response.RawBody, &skillGroupPayload) - if err != nil { - return nil, util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to unmarshal skill groups"), err) - } - - if skillGroupPayload.Entities == nil || len(skillGroupPayload.Entities) == 0 { - break - } - - for _, skillGroup := range skillGroupPayload.Entities { - - resources[skillGroup.ID] = &resourceExporter.ResourceMeta{Name: skillGroup.Name} - } - if route == skillGroupPayload.NextURI || skillGroupPayload.NextURI == "" { - break - } else { - route = skillGroupPayload.NextURI - } + allSkillGroups, resp, err := getAllSkillGroupsByName(routingAPI, "") + if err != nil { + msg := fmt.Sprintf("failed to read skill groups: %v", err) + return nil, util.BuildAPIDiagnosticError(getSkillGroupResourceName(), msg, resp) + } + for _, skillGroup := range allSkillGroups { + resources[*skillGroup.Id] = &resourceExporter.ResourceMeta{Name: *skillGroup.Name} } return resources, nil @@ -101,6 +65,10 @@ func ResourceSkillGroupExporter() *resourceExporter.ResourceExporter { } } +func getSkillGroupResourceName() string { + return "genesyscloud_routing_skill_group" +} + func ResourceRoutingSkillGroup() *schema.Resource { return &schema.Resource{ Description: `Genesys Cloud Skill Group`, @@ -174,14 +142,14 @@ func createOrUpdateSkillGroups(ctx context.Context, d *schema.ResourceData, meta //Merge in skill conditions finalSkillGroupsJson, err := mergeSkillConditionsIntoSkillGroups(d, skillGroupsRequest) if err != nil { - return util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to read the before skills groups request before: %s", skillGroupsRequest.Name), err) + return util.BuildDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to read the before skills groups request before: %s", skillGroupsRequest.Name), err) } sdkConfig := meta.(*provider.ProviderMeta).ClientConfig routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) apiClient := &routingAPI.Configuration.APIClient path := routingAPI.Configuration.BasePath + route - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) /* Since API Client expects either a struct or map of maps (of json), convert the JSON string to a map @@ -190,7 +158,7 @@ func createOrUpdateSkillGroups(ctx context.Context, d *schema.ResourceData, meta var skillGroupsPayload map[string]interface{} err = json.Unmarshal([]byte(finalSkillGroupsJson), &skillGroupsPayload) if err != nil { - return util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to unmarshal the JSON payload while creating/updating the skills group %s", skillGroupsRequest.Name), err) + return util.BuildDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to unmarshal the JSON payload while creating/updating the skills group %s", skillGroupsRequest.Name), err) } httpMethod := "POST" @@ -200,14 +168,14 @@ func createOrUpdateSkillGroups(ctx context.Context, d *schema.ResourceData, meta response, err := apiClient.CallAPI(path, httpMethod, skillGroupsPayload, headerParams, nil, nil, "", nil) if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to create/update skill groups %s error: %s", skillGroupsRequest.Name, err), response) + return util.BuildAPIDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to create/update skill groups %s error: %s", skillGroupsRequest.Name, err), response) } //Get the results and pull out the id skillGroupPayload := make(map[string]interface{}) err = json.Unmarshal(response.RawBody, &skillGroupPayload) if err != nil { - return util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to unmarshal skill groups"), err) + return util.BuildDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to unmarshal skill groups"), err) } if create == true { @@ -265,12 +233,12 @@ func postSkillGroupMemberDivisions(ctx context.Context, d *schema.ResourceData, skillGroupsMemberDivisionIdsPayload["addDivisionIds"] = toAdd } - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) apiClient := &routingAPI.Configuration.APIClient path := fmt.Sprintf("%s/api/v2/routing/skillgroups/%s/members/divisions", routingAPI.Configuration.BasePath, d.Id()) response, err := apiClient.CallAPI(path, "POST", skillGroupsMemberDivisionIdsPayload, headerParams, nil, nil, "", nil) if err != nil || response.Error != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to create/update skill group %s member divisions error: %s", d.Id(), err), response) + return util.BuildAPIDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to create/update skill group %s member divisions error: %s", d.Id(), err), response) } log.Printf("Updated skill group %s member divisions", name) @@ -300,7 +268,7 @@ func createListsForSkillgroupsMembersDivisionsPost(schemaMemberDivisionIds []str if allMemberDivisionsSpecified(schemaMemberDivisionIds) { if len(schemaMemberDivisionIds) > 1 { - return nil, nil, util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf(`member_division_ids should not contain more than one item when the value of an item is "*"`), fmt.Errorf(`member_division_ids should not contain more than one item when the value of an item is "*"`)) + return nil, nil, util.BuildDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf(`member_division_ids should not contain more than one item when the value of an item is "*"`), fmt.Errorf(`member_division_ids should not contain more than one item when the value of an item is "*"`)) } toAdd, err := getAllAuthDivisionIds(meta) return toAdd, nil, err @@ -361,7 +329,7 @@ func readSkillGroups(ctx context.Context, d *schema.ResourceData, meta interface path := routingAPI.Configuration.BasePath + "/api/v2/routing/skillgroups/" + d.Id() // add default headers if any - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) log.Printf("Reading skills group %s", d.Id()) @@ -371,11 +339,11 @@ func readSkillGroups(ctx context.Context, d *schema.ResourceData, meta interface response, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) if err != nil { - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to retrieve skill groups %s", err), response)) + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to retrieve skill groups %s", err), response)) } if err == nil && response.Error != nil && response.StatusCode != http.StatusNotFound { - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to retrieve skill groups. %s", err), response)) + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to retrieve skill groups. %s", err), response)) } err = json.Unmarshal(response.RawBody, &skillGroupPayload) @@ -384,7 +352,7 @@ func readSkillGroups(ctx context.Context, d *schema.ResourceData, meta interface } if err == nil && util.IsStatus404(response) { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to read skill groups %s | error: %s", d.Id(), err), response)) + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to read skill groups %s | error: %s", d.Id(), err), response)) } name := skillGroupPayload["name"] @@ -440,7 +408,7 @@ func readSkillGroups(ctx context.Context, d *schema.ResourceData, meta interface }) } -func buildHeaderParams(routingAPI *platformclientv2.RoutingApi) map[string]string { +func BuildHeaderParams(routingAPI *platformclientv2.RoutingApi) map[string]string { headerParams := make(map[string]string) for key := range routingAPI.Configuration.DefaultHeader { @@ -470,7 +438,7 @@ func deleteSkillGroups(ctx context.Context, d *schema.ResourceData, meta interfa path := routingAPI.Configuration.BasePath + "/api/v2/routing/skillgroups/" + d.Id() // add default headers if any - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) log.Printf("Deleting skills group %s", name) response, err := apiClient.CallAPI(path, "DELETE", nil, headerParams, nil, nil, "", nil) @@ -481,7 +449,7 @@ func deleteSkillGroups(ctx context.Context, d *schema.ResourceData, meta interfa log.Printf("Skills Group was already deleted %s", d.Id()) return nil } - return util.BuildAPIDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to delete skill group %s error: %s", d.Id(), err), response) + return util.BuildAPIDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to delete skill group %s error: %s", d.Id(), err), response) } return util.WithRetries(ctx, 30*time.Second, func() *retry.RetryError { @@ -494,14 +462,14 @@ func deleteSkillGroups(ctx context.Context, d *schema.ResourceData, meta interfa log.Printf("Deleted skills group %s", d.Id()) return nil } - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Error deleting skill group %s | error: %s", d.Id(), err), response)) + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Error deleting skill group %s | error: %s", d.Id(), err), response)) } - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Skill group %s still exists", d.Id()), response)) + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Skill group %s still exists", d.Id()), response)) }) } func readSkillGroupMemberDivisionIds(d *schema.ResourceData, routingAPI *platformclientv2.RoutingApi) ([]string, diag.Diagnostics) { - headers := buildHeaderParams(routingAPI) + headers := BuildHeaderParams(routingAPI) apiClient := &routingAPI.Configuration.APIClient path := fmt.Sprintf("%s/api/v2/routing/skillgroups/%s/members/divisions", routingAPI.Configuration.BasePath, d.Id()) @@ -509,13 +477,13 @@ func readSkillGroupMemberDivisionIds(d *schema.ResourceData, routingAPI *platfor response, err := apiClient.CallAPI(path, "GET", nil, headers, nil, nil, "", nil) if err != nil || response.Error != nil { - return nil, util.BuildAPIDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to get member divisions for skill group %s error: %s", d.Id(), err), response) + return nil, util.BuildAPIDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to get member divisions for skill group %s error: %s", d.Id(), err), response) } memberDivisionsPayload := make(map[string]interface{}, 0) err = json.Unmarshal(response.RawBody, &memberDivisionsPayload) if err != nil { - return nil, util.BuildDiagnosticError("genesyscloud_routing_skill_group", fmt.Sprintf("Failed to unmarshal member divisions"), err) + return nil, util.BuildDiagnosticError(getSkillGroupResourceName(), fmt.Sprintf("Failed to unmarshal member divisions"), err) } apiSkillGroupMemberDivisionIds := make([]string, 0) @@ -593,9 +561,9 @@ func GenerateRoutingSkillGroupResourceBasic( resourceID string, name string, description string) string { - return fmt.Sprintf(`resource "genesyscloud_routing_skill_group" "%s" { + return fmt.Sprintf(`resource "%s" "%s" { name = "%s" description="%s" } - `, resourceID, name, description) + `, getSkillGroupResourceName(), resourceID, name, description) } diff --git a/genesyscloud/resource_genesyscloud_routing_skill_group_test.go b/genesyscloud/resource_genesyscloud_routing_skill_group_test.go index 4c7caa783..311e08fc7 100644 --- a/genesyscloud/resource_genesyscloud_routing_skill_group_test.go +++ b/genesyscloud/resource_genesyscloud_routing_skill_group_test.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func testAccCheckSkillConditions(resourceName string, targetSkillConditionJson string) resource.TestCheckFunc { @@ -391,7 +391,6 @@ data "genesyscloud_auth_division_home" "home" {} 3. Verify the skill group added those users when they match the skill expression. */ func TestAccResourceRoutingSkillGroupMemberDivisionsUsersAssigned(t *testing.T) { - t.Parallel() var ( skillGroupResourceId = "testskillgroup3" skillGroupName = "testskillgroup3 " + uuid.NewString() @@ -422,6 +421,9 @@ func TestAccResourceRoutingSkillGroupMemberDivisionsUsersAssigned(t *testing.T) "genesyscloud_auth_division." + division2ResourceId + ".id", "genesyscloud_auth_division." + division3ResourceId + ".id", } + userID1 string + userID2 string + userID3 string ) routingSkillResource := GenerateRoutingSkillResource(routingSkillResourceId, routingSkillName) @@ -501,6 +503,9 @@ resource "genesyscloud_routing_skill_group" "%s" { ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), Steps: []resource.TestStep{ { + PreConfig: func() { + time.Sleep(30 * time.Second) + }, Config: skillGroupResource + routingSkillResource + division1Resource + @@ -511,6 +516,25 @@ resource "genesyscloud_routing_skill_group" "%s" { user3Resource, Check: resource.ComposeTestCheckFunc( testVerifySkillGroupMemberCount("genesyscloud_routing_skill_group."+skillGroupResourceId, "3"), + func(s *terraform.State) error { + rs, ok := s.RootModule().Resources["genesyscloud_user."+user1ResourceId] + if !ok { + return fmt.Errorf("not found: %s", "genesyscloud_user."+user1ResourceId) + } + userID1 = rs.Primary.ID + log.Printf("User ID: %s\n", userID1) // Print user ID + rs, ok = s.RootModule().Resources["genesyscloud_user."+user2ResourceId] + if !ok { + return fmt.Errorf("not found: %s", "genesyscloud_user."+user2ResourceId) + } + userID2 = rs.Primary.ID + rs, ok = s.RootModule().Resources["genesyscloud_user."+user3ResourceId] + if !ok { + return fmt.Errorf("not found: %s", "genesyscloud_user."+user3ResourceId) + } + userID3 = rs.Primary.ID + return nil + }, ), }, { @@ -518,6 +542,11 @@ resource "genesyscloud_routing_skill_group" "%s" { ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{"member_division_ids"}, + Check: resource.ComposeTestCheckFunc( + checkUserDeleted(userID1), + checkUserDeleted(userID2), + checkUserDeleted(userID3), + ), }, }, CheckDestroy: testVerifySkillGroupDestroyed, @@ -574,7 +603,7 @@ func testVerifySkillGroupMemberCount(resourceName string, count string) resource // get skill group via GET /api/v2/routing/skillgroups/{skillGroupId} path := fmt.Sprintf("%s/api/v2/routing/skillgroups/%s", routingAPI.Configuration.BasePath, resourceID) - headers := buildHeaderParams(routingAPI) + headers := BuildHeaderParams(routingAPI) apiClient := &routingAPI.Configuration.APIClient response, err := apiClient.CallAPI(path, "GET", nil, headers, nil, nil, "", nil) @@ -706,7 +735,7 @@ func testVerifySkillGroupDestroyed(state *terraform.State) error { // TODO Once this code has been released into the public API we should fix this and use the SDK - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) for _, rs := range state.RootModule().Resources { if rs.Type != "genesyscloud_routing_skill_group" { continue @@ -737,7 +766,7 @@ func testVerifySkillGroupDestroyed(state *terraform.State) error { } func getAllSkillGroupMemberDivisionIds(routingAPI *platformclientv2.RoutingApi, resourceId string) ([]string, diag.Diagnostics) { - headers := buildHeaderParams(routingAPI) + headers := BuildHeaderParams(routingAPI) apiClient := &routingAPI.Configuration.APIClient path := fmt.Sprintf("%s/api/v2/routing/skillgroups/%s/members/divisions", routingAPI.Configuration.BasePath, resourceId) response, err := apiClient.CallAPI(path, "GET", nil, headers, nil, nil, "", nil) @@ -761,3 +790,45 @@ func getAllSkillGroupMemberDivisionIds(routingAPI *platformclientv2.RoutingApi, return apiSkillGroupMemberDivisionIds, nil } + +func checkUserDeleted(id string) resource.TestCheckFunc { + log.Printf("Fetching user with ID: %s\n", id) + return func(s *terraform.State) error { + maxAttempts := 18 + for i := 0; i < maxAttempts; i++ { + + deleted, err := isUserDeleted(id) + if err != nil { + return err + } + if deleted { + return nil + } + time.Sleep(10 * time.Second) + } + return fmt.Errorf("user %s was not deleted properly", id) + } +} + +func isUserDeleted(id string) (bool, error) { + mu.Lock() + defer mu.Unlock() + + usersAPI := platformclientv2.NewUsersApiWithConfig(sdkConfig) + // Attempt to get the user + _, response, err := usersAPI.GetUser(id, nil, "", "") + + // Check if the user is not found (deleted) + if response != nil && response.StatusCode == 404 { + return true, nil // User is deleted + } + + // Handle other errors + if err != nil { + log.Printf("Error fetching user: %v", err) + return false, err + } + + // If user is found, it means the user is not deleted + return false, nil +} diff --git a/genesyscloud/resource_genesyscloud_routing_skill_test.go b/genesyscloud/resource_genesyscloud_routing_skill_test.go index b213ac5af..551c061a6 100644 --- a/genesyscloud/resource_genesyscloud_routing_skill_test.go +++ b/genesyscloud/resource_genesyscloud_routing_skill_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingSkillBasic(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_routing_utilization.go b/genesyscloud/resource_genesyscloud_routing_utilization.go deleted file mode 100644 index 3cc9614df..000000000 --- a/genesyscloud/resource_genesyscloud_routing_utilization.go +++ /dev/null @@ -1,389 +0,0 @@ -package genesyscloud - -import ( - "context" - "encoding/json" - "fmt" - "log" - "sort" - "strings" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" - "terraform-provider-genesyscloud/genesyscloud/util/constants" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - - "terraform-provider-genesyscloud/genesyscloud/consistency_checker" - - resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" - lists "terraform-provider-genesyscloud/genesyscloud/util/lists" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" -) - -type MediaUtilization struct { - MaximumCapacity int32 `json:"maximumCapacity"` - InterruptableMediaTypes []string `json:"interruptableMediaTypes"` - IncludeNonAcd bool `json:"includeNonAcd"` -} - -type LabelUtilization struct { - MaximumCapacity int32 `json:"maximumCapacity"` - InterruptingLabelIds []string `json:"interruptingLabelIds"` -} - -type OrgUtilizationWithLabels struct { - Utilization map[string]MediaUtilization `json:"utilization"` - LabelUtilizations map[string]LabelUtilization `json:"labelUtilizations"` -} - -var ( - // Map of SDK media type name to schema media type name - utilizationMediaTypes = map[string]string{ - "call": "call", - "callback": "callback", - "chat": "chat", - "email": "email", - "message": "message", - } - - utilizationSettingsResource = &schema.Resource{ - Schema: map[string]*schema.Schema{ - "maximum_capacity": { - Description: "Maximum capacity of conversations of this media type. Value must be between 0 and 25.", - Type: schema.TypeInt, - Required: true, - ValidateFunc: validation.IntBetween(0, 25), - }, - "interruptible_media_types": { - Description: fmt.Sprintf("Set of other media types that can interrupt this media type (%s).", strings.Join(getSdkUtilizationTypes(), " | ")), - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "include_non_acd": { - Description: "Block this media type when on a non-ACD conversation.", - Type: schema.TypeBool, - Optional: true, - Default: false, - }, - }, - } - - utilizationLabelResource = &schema.Resource{ - Schema: map[string]*schema.Schema{ - "label_id": { - Description: "Id of the label being configured.", - Type: schema.TypeString, - Required: true, - }, - "maximum_capacity": { - Description: "Maximum capacity of conversations with this label. Value must be between 0 and 25.", - Type: schema.TypeInt, - Required: true, - ValidateFunc: validation.IntBetween(0, 25), - }, - "interrupting_label_ids": { - Description: "Set of other labels that can interrupt this label.", - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - }, - } -) - -func getSdkUtilizationTypes() []string { - types := make([]string, 0, len(utilizationMediaTypes)) - for t := range utilizationMediaTypes { - types = append(types, t) - } - sort.Strings(types) - return types -} - -func getAllRoutingUtilization(_ context.Context, _ *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { - // Routing utilization config always exists - resources := make(resourceExporter.ResourceIDMetaMap) - resources["0"] = &resourceExporter.ResourceMeta{Name: "routing_utilization"} - return resources, nil -} - -func RoutingUtilizationExporter() *resourceExporter.ResourceExporter { - return &resourceExporter.ResourceExporter{ - GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingUtilization), - RefAttrs: map[string]*resourceExporter.RefAttrSettings{}, // No references - AllowZeroValues: []string{"maximum_capacity"}, - } -} - -func ResourceRoutingUtilization() *schema.Resource { - return &schema.Resource{ - Description: "Genesys Cloud Org-wide Routing Utilization Settings.", - - CreateContext: provider.CreateWithPooledClient(createRoutingUtilization), - ReadContext: provider.ReadWithPooledClient(readRoutingUtilization), - UpdateContext: provider.UpdateWithPooledClient(updateRoutingUtilization), - DeleteContext: provider.DeleteWithPooledClient(deleteRoutingUtilization), - Importer: &schema.ResourceImporter{ - StateContext: schema.ImportStatePassthroughContext, - }, - SchemaVersion: 1, - Timeouts: &schema.ResourceTimeout{ - Update: schema.DefaultTimeout(8 * time.Minute), - Read: schema.DefaultTimeout(8 * time.Minute), - }, - Schema: map[string]*schema.Schema{ - "call": { - Description: "Call media settings. If not set, this reverts to the default media type settings.", - Type: schema.TypeList, - MaxItems: 1, - Optional: true, - Computed: true, - Elem: utilizationSettingsResource, - }, - "callback": { - Description: "Callback media settings. If not set, this reverts to the default media type settings.", - Type: schema.TypeList, - MaxItems: 1, - Optional: true, - Computed: true, - Elem: utilizationSettingsResource, - }, - "message": { - Description: "Message media settings. If not set, this reverts to the default media type settings.", - Type: schema.TypeList, - MaxItems: 1, - Optional: true, - Computed: true, - Elem: utilizationSettingsResource, - }, - "email": { - Description: "Email media settings. If not set, this reverts to the default media type settings.", - Type: schema.TypeList, - MaxItems: 1, - Optional: true, - Computed: true, - Elem: utilizationSettingsResource, - }, - "chat": { - Description: "Chat media settings. If not set, this reverts to the default media type settings.", - Type: schema.TypeList, - MaxItems: 1, - Optional: true, - Computed: true, - Elem: utilizationSettingsResource, - }, - "label_utilizations": { - Description: "Label utilization settings. If not set, default label settings will be applied. This is in PREVIEW and should not be used unless the feature is available to your organization.", - Type: schema.TypeList, - Optional: true, - Computed: true, - Elem: utilizationLabelResource, - }, - }, - } -} - -func createRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - log.Printf("Creating Routing Utilization") - d.SetId("routing_utilization") - return updateRoutingUtilization(ctx, d, meta) -} - -func readRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - // Calling the Utilization API directly while the label feature is not available. - // Once it is, this code can go back to using platformclientv2's RoutingApi to make the call. - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - apiClient := &routingAPI.Configuration.APIClient - cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingSkill(), constants.DefaultConsistencyChecks, "genesyscloud_routing_utilization") - - path := fmt.Sprintf("%s/api/v2/routing/utilization", routingAPI.Configuration.BasePath) - headerParams := buildHeaderParams(routingAPI) - - log.Printf("Reading Routing Utilization") - return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { - response, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) - if err != nil { - if util.IsStatus404(response) { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization", fmt.Sprintf("Failed to read Routing Utilization: %s", err), response)) - } - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization", fmt.Sprintf("Failed to read Routing Utilization: %s", err), response)) - } - - orgUtilization := &OrgUtilizationWithLabels{} - err = json.Unmarshal(response.RawBody, &orgUtilization) - - if orgUtilization.Utilization != nil { - for sdkType, schemaType := range utilizationMediaTypes { - if mediaSettings, ok := orgUtilization.Utilization[sdkType]; ok { - d.Set(schemaType, flattenUtilizationSetting(mediaSettings)) - } else { - d.Set(schemaType, nil) - } - } - } - - if orgUtilization.LabelUtilizations != nil { - originalLabelUtilizations := d.Get("label_utilizations").([]interface{}) - - // Only add to the state the configured labels, in the configured order, but not any extras, to help terraform with matching new and old state. - flattenedLabelUtilizations := filterAndFlattenLabelUtilizations(orgUtilization.LabelUtilizations, originalLabelUtilizations) - d.Set("label_utilizations", flattenedLabelUtilizations) - } - - log.Printf("Read Routing Utilization") - return cc.CheckState(d) - }) -} - -func updateRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - var resp *platformclientv2.APIResponse - var err error - - log.Printf("Updating Routing Utilization") - - labelUtilizations := d.Get("label_utilizations").([]interface{}) - - // Retrying on 409s because if a label is created immediately before the utilization update, it can lead to a conflict while the utilization is being updated to handle the new label. - diagErr := util.RetryWhen(util.IsStatus409, func() (*platformclientv2.APIResponse, diag.Diagnostics) { - // If the resource has label(s), calls the Utilization API directly. - // This code can go back to using platformclientv2's RoutingApi to make the call once label utilization is available in platformclientv2's RoutingApi. - if labelUtilizations != nil && len(labelUtilizations) > 0 { - apiClient := &routingAPI.Configuration.APIClient - - path := fmt.Sprintf("%s/api/v2/routing/utilization", routingAPI.Configuration.BasePath) - headerParams := buildHeaderParams(routingAPI) - requestPayload := make(map[string]interface{}) - requestPayload["utilization"] = buildSdkMediaUtilizations(d) - requestPayload["labelUtilizations"] = buildLabelUtilizationsRequest(labelUtilizations) - resp, err = apiClient.CallAPI(path, "PUT", requestPayload, headerParams, nil, nil, "", nil) - } else { - _, resp, err = routingAPI.PutRoutingUtilization(platformclientv2.Utilizationrequest{ - Utilization: buildSdkMediaUtilizations(d), - }) - } - - if err != nil { - return resp, util.BuildAPIDiagnosticError("genesyscloud_routing_utilization", fmt.Sprintf("Failed to update Routing Utilization %s error: %s", d.Id(), err), resp) - } - return resp, nil - }) - - if diagErr != nil { - return diagErr - } - - log.Printf("Updated Routing Utilization") - return readRoutingUtilization(ctx, d, meta) -} - -func deleteRoutingUtilization(_ context.Context, _ *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - // Resets to default values - log.Printf("Resetting Routing Utilization") - resp, err := routingAPI.DeleteRoutingUtilization() - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_utilization", fmt.Sprintf("Failed to reset Routing Utilization error: %s", err), resp) - } - log.Printf("Reset Routing Utilization") - return nil -} - -func flattenUtilizationSetting(settings MediaUtilization) []interface{} { - settingsMap := make(map[string]interface{}) - - settingsMap["maximum_capacity"] = settings.MaximumCapacity - settingsMap["include_non_acd"] = settings.IncludeNonAcd - if settings.InterruptableMediaTypes != nil { - settingsMap["interruptible_media_types"] = lists.StringListToSet(settings.InterruptableMediaTypes) - } - - return []interface{}{settingsMap} -} - -func filterAndFlattenLabelUtilizations(labelUtilizations map[string]LabelUtilization, originalLabelUtilizations []interface{}) []interface{} { - flattenedLabelUtilizations := make([]interface{}, 0) - - for _, originalLabelUtilization := range originalLabelUtilizations { - originalLabelId := (originalLabelUtilization.(map[string]interface{}))["label_id"].(string) - - for currentLabelId, currentLabelUtilization := range labelUtilizations { - if currentLabelId == originalLabelId { - flattenedLabelUtilizations = append(flattenedLabelUtilizations, flattenLabelUtilization(currentLabelId, currentLabelUtilization)) - delete(labelUtilizations, currentLabelId) - break - } - } - } - - return flattenedLabelUtilizations -} - -func flattenLabelUtilization(labelId string, labelUtilization LabelUtilization) map[string]interface{} { - utilizationMap := make(map[string]interface{}) - - utilizationMap["label_id"] = labelId - utilizationMap["maximum_capacity"] = labelUtilization.MaximumCapacity - if labelUtilization.InterruptingLabelIds != nil { - utilizationMap["interrupting_label_ids"] = lists.StringListToSet(labelUtilization.InterruptingLabelIds) - } - - return utilizationMap -} - -func buildSdkMediaUtilizations(d *schema.ResourceData) *map[string]platformclientv2.Mediautilization { - settings := make(map[string]platformclientv2.Mediautilization) - - for sdkType, schemaType := range utilizationMediaTypes { - mediaSettings := d.Get(schemaType).([]interface{}) - if mediaSettings != nil && len(mediaSettings) > 0 { - settings[sdkType] = buildSdkMediaUtilization(mediaSettings) - } - } - - return &settings -} - -func buildSdkMediaUtilization(settings []interface{}) platformclientv2.Mediautilization { - settingsMap := settings[0].(map[string]interface{}) - - maxCapacity := settingsMap["maximum_capacity"].(int) - includeNonAcd := settingsMap["include_non_acd"].(bool) - - // Optional - interruptableMediaTypes := &[]string{} - if types, ok := settingsMap["interruptible_media_types"]; ok { - interruptableMediaTypes = lists.SetToStringList(types.(*schema.Set)) - } - - return platformclientv2.Mediautilization{ - MaximumCapacity: &maxCapacity, - IncludeNonAcd: &includeNonAcd, - InterruptableMediaTypes: interruptableMediaTypes, - } -} - -func buildLabelUtilizationsRequest(labelUtilizations []interface{}) map[string]LabelUtilization { - request := make(map[string]LabelUtilization) - for _, labelUtilization := range labelUtilizations { - labelUtilizationMap := labelUtilization.(map[string]interface{}) - interruptingLabelIds := lists.SetToStringList(labelUtilizationMap["interrupting_label_ids"].(*schema.Set)) - - request[labelUtilizationMap["label_id"].(string)] = LabelUtilization{ - MaximumCapacity: int32(labelUtilizationMap["maximum_capacity"].(int)), - InterruptingLabelIds: *interruptingLabelIds, - } - } - return request -} diff --git a/genesyscloud/resource_genesyscloud_routing_utilization_label.go b/genesyscloud/resource_genesyscloud_routing_utilization_label.go deleted file mode 100644 index 209be66a0..000000000 --- a/genesyscloud/resource_genesyscloud_routing_utilization_label.go +++ /dev/null @@ -1,162 +0,0 @@ -package genesyscloud - -import ( - "context" - "fmt" - "log" - "terraform-provider-genesyscloud/genesyscloud/provider" - "terraform-provider-genesyscloud/genesyscloud/util" - "terraform-provider-genesyscloud/genesyscloud/util/constants" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - - "terraform-provider-genesyscloud/genesyscloud/consistency_checker" - - resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" -) - -func getAllRoutingUtilizationLabels(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { - resources := make(resourceExporter.ResourceIDMetaMap) - routingAPI := platformclientv2.NewRoutingApiWithConfig(clientConfig) - - for pageNum := 1; ; pageNum++ { - const pageSize = 100 - labels, resp, getErr := routingAPI.GetRoutingUtilizationLabels(pageSize, pageNum, "", "") - if getErr != nil { - return nil, util.BuildAPIDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to get page of labels error: %s", getErr), resp) - } - - if labels.Entities == nil || len(*labels.Entities) == 0 { - break - } - - for _, label := range *labels.Entities { - resources[*label.Id] = &resourceExporter.ResourceMeta{Name: *label.Name} - } - } - - return resources, nil -} - -func RoutingUtilizationLabelExporter() *resourceExporter.ResourceExporter { - return &resourceExporter.ResourceExporter{ - GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingUtilizationLabels), - RefAttrs: map[string]*resourceExporter.RefAttrSettings{}, // No references - } -} - -func ResourceRoutingUtilizationLabel() *schema.Resource { - return &schema.Resource{ - Description: "Genesys Cloud Routing Utilization Label. This resource is not yet widely available. Only use it if the feature is enabled.", - - CreateContext: provider.CreateWithPooledClient(createRoutingUtilizationLabel), - ReadContext: provider.ReadWithPooledClient(readRoutingUtilizationLabel), - UpdateContext: provider.UpdateWithPooledClient(updateRoutingUtilizationLabel), - DeleteContext: provider.DeleteWithPooledClient(deleteRoutingUtilizationLabel), - Importer: &schema.ResourceImporter{ - StateContext: schema.ImportStatePassthroughContext, - }, - SchemaVersion: 1, - Schema: map[string]*schema.Schema{ - "name": { - Description: "Label name.", - Type: schema.TypeString, - Required: true, - }, - }, - } -} - -func createRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - name := d.Get("name").(string) - - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - log.Printf("Creating label %s", name) - label, resp, err := routingAPI.PostRoutingUtilizationLabels(platformclientv2.Createutilizationlabelrequest{ - Name: &name, - }) - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to create label %s error: %s", name, err), resp) - } - - d.SetId(*label.Id) - - log.Printf("Created label %s %s", name, *label.Id) - return readRoutingUtilizationLabel(ctx, d, meta) -} - -func updateRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - id := d.Id() - name := d.Get("name").(string) - - log.Printf("Updating label %s with name %s", id, name) - - _, resp, err := routingAPI.PutRoutingUtilizationLabel(id, platformclientv2.Updateutilizationlabelrequest{ - Name: &name, - }) - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to update label %s error: %s", id, err), resp) - } - - log.Printf("Updated label %s", id) - return readRoutingUtilizationLabel(ctx, d, meta) -} - -func readRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingApi := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingUtilizationLabel(), constants.DefaultConsistencyChecks, "genesyscloud_routing_utilization_label") - - log.Printf("Reading label %s", d.Id()) - return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { - label, resp, getErr := routingApi.GetRoutingUtilizationLabel(d.Id()) - if getErr != nil { - if util.IsStatus404(resp) { - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to read label %s | error: %s", d.Id(), getErr), resp)) - } - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to read label %s | error: %s", d.Id(), getErr), resp)) - } - - d.Set("name", *label.Name) - log.Printf("Read label %s %s", d.Id(), *label.Name) - return cc.CheckState(d) - }) -} - -func deleteRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - name := d.Get("name").(string) - - sdkConfig := meta.(*provider.ProviderMeta).ClientConfig - routingApi := platformclientv2.NewRoutingApiWithConfig(sdkConfig) - - log.Printf("Deleting label %s", name) - resp, err := routingApi.DeleteRoutingUtilizationLabel(d.Id(), true) - - if err != nil { - return util.BuildAPIDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Failed to delete label %s error: %s", name, err), resp) - } - - return util.WithRetries(ctx, 30*time.Second, func() *retry.RetryError { - _, resp, err := routingApi.GetRoutingUtilizationLabel(d.Id()) - if err != nil { - if util.IsStatus404(resp) { - // Routing label deleted - log.Printf("Deleted Routing label %s", d.Id()) - return nil - } - return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Error deleting Routing label %s: %s", d.Id(), err), resp)) - } - - return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_routing_utilization_label", fmt.Sprintf("Routing label %s still exists", d.Id()), resp)) - }) -} diff --git a/genesyscloud/resource_genesyscloud_routing_wrapupcode.go b/genesyscloud/resource_genesyscloud_routing_wrapupcode.go index 32e3be970..962e28073 100644 --- a/genesyscloud/resource_genesyscloud_routing_wrapupcode.go +++ b/genesyscloud/resource_genesyscloud_routing_wrapupcode.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllRoutingWrapupCodes(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/resource_genesyscloud_routing_wrapupcode_test.go b/genesyscloud/resource_genesyscloud_routing_wrapupcode_test.go index 7102e6167..d4becc64d 100644 --- a/genesyscloud/resource_genesyscloud_routing_wrapupcode_test.go +++ b/genesyscloud/resource_genesyscloud_routing_wrapupcode_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingWrapupcode(t *testing.T) { diff --git a/genesyscloud/resource_genesyscloud_user.go b/genesyscloud/resource_genesyscloud_user.go index 8387da786..79baca358 100644 --- a/genesyscloud/resource_genesyscloud_user.go +++ b/genesyscloud/resource_genesyscloud_user.go @@ -7,6 +7,7 @@ import ( "log" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" + routingUtilization "terraform-provider-genesyscloud/genesyscloud/routing_utilization" "terraform-provider-genesyscloud/genesyscloud/util" "terraform-provider-genesyscloud/genesyscloud/util/constants" "terraform-provider-genesyscloud/genesyscloud/validators" @@ -23,14 +24,14 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/nyaruka/phonenumbers" ) type AgentUtilizationWithLabels struct { - Utilization map[string]MediaUtilization `json:"utilization"` - LabelUtilizations map[string]LabelUtilization `json:"labelUtilizations"` - Level string `json:"level"` + Utilization map[string]routingUtilization.MediaUtilization `json:"utilization"` + LabelUtilizations map[string]routingUtilization.LabelUtilization `json:"labelUtilizations"` + Level string `json:"level"` } var ( @@ -377,7 +378,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationSettingsResource, + Elem: routingUtilization.UtilizationSettingsResource, }, "callback": { Description: "Callback media settings. If not set, this reverts to the default media type settings.", @@ -386,7 +387,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationSettingsResource, + Elem: routingUtilization.UtilizationSettingsResource, }, "message": { Description: "Message media settings. If not set, this reverts to the default media type settings.", @@ -395,7 +396,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationSettingsResource, + Elem: routingUtilization.UtilizationSettingsResource, }, "email": { Description: "Email media settings. If not set, this reverts to the default media type settings.", @@ -404,7 +405,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationSettingsResource, + Elem: routingUtilization.UtilizationSettingsResource, }, "chat": { Description: "Chat media settings. If not set, this reverts to the default media type settings.", @@ -413,7 +414,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationSettingsResource, + Elem: routingUtilization.UtilizationSettingsResource, }, "label_utilizations": { Description: "Label utilization settings. If not set, default label settings will be applied. This is in PREVIEW and should not be used unless the feature is available to your organization.", @@ -421,7 +422,7 @@ func ResourceUser() *schema.Resource { Optional: true, Computed: true, ConfigMode: schema.SchemaConfigModeAttr, - Elem: utilizationLabelResource, + Elem: routingUtilization.UtilizationLabelResource, }, }, }, @@ -1050,7 +1051,7 @@ func readUserRoutingUtilization(d *schema.ResourceData, sdkConfig *platformclien apiClient := &routingAPI.Configuration.APIClient path := fmt.Sprintf("%s/api/v2/routing/users/%s/utilization", routingAPI.Configuration.BasePath, d.Id()) - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) response, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) if err != nil { @@ -1073,9 +1074,9 @@ func readUserRoutingUtilization(d *schema.ResourceData, sdkConfig *platformclien allSettings := map[string]interface{}{} if agentUtilization.Utilization != nil { - for sdkType, schemaType := range utilizationMediaTypes { + for sdkType, schemaType := range routingUtilization.UtilizationMediaTypes { if mediaSettings, ok := agentUtilization.Utilization[sdkType]; ok { - allSettings[schemaType] = flattenUtilizationSetting(mediaSettings) + allSettings[schemaType] = routingUtilization.FlattenUtilizationSetting(mediaSettings) } } } @@ -1087,7 +1088,7 @@ func readUserRoutingUtilization(d *schema.ResourceData, sdkConfig *platformclien originalLabelUtilizations := originalSettings["label_utilizations"].([]interface{}) // Only add to the state the configured labels, in the configured order, but not any extras, to help terraform with matching new and old state. - filteredLabelUtilizations := filterAndFlattenLabelUtilizations(agentUtilization.LabelUtilizations, originalLabelUtilizations) + filteredLabelUtilizations := routingUtilization.FilterAndFlattenLabelUtilizations(agentUtilization.LabelUtilizations, originalLabelUtilizations) allSettings["label_utilizations"] = filteredLabelUtilizations } else { @@ -1293,16 +1294,17 @@ func updateUserRoutingUtilization(d *schema.ResourceData, usersAPI *platformclie apiClient := &routingAPI.Configuration.APIClient path := fmt.Sprintf("%s/api/v2/routing/users/%s/utilization", routingAPI.Configuration.BasePath, d.Id()) - headerParams := buildHeaderParams(routingAPI) + headerParams := BuildHeaderParams(routingAPI) requestPayload := make(map[string]interface{}) requestPayload["utilization"] = buildMediaTypeUtilizations(allSettings) - requestPayload["labelUtilizations"] = buildLabelUtilizationsRequest(labelUtilizations) + + requestPayload["labelUtilizations"] = routingUtilization.BuildLabelUtilizationsRequest(labelUtilizations) _, err = apiClient.CallAPI(path, "PUT", requestPayload, headerParams, nil, nil, "", nil) } else { sdkSettings := make(map[string]platformclientv2.Mediautilization) - for sdkType, schemaType := range utilizationMediaTypes { + for sdkType, schemaType := range routingUtilization.UtilizationMediaTypes { if mediaSettings, ok := allSettings[schemaType]; ok && len(mediaSettings.([]interface{})) > 0 { - sdkSettings[sdkType] = buildSdkMediaUtilization(mediaSettings.([]interface{})) + sdkSettings[sdkType] = routingUtilization.BuildSdkMediaUtilization(mediaSettings.([]interface{})) } } @@ -1391,10 +1393,10 @@ func flattenUserCertifications(certs *[]string) *schema.Set { func buildMediaTypeUtilizations(allUtilizations map[string]interface{}) *map[string]platformclientv2.Mediautilization { settings := make(map[string]platformclientv2.Mediautilization) - for sdkType, schemaType := range utilizationMediaTypes { + for sdkType, schemaType := range routingUtilization.UtilizationMediaTypes { mediaSettings := allUtilizations[schemaType].([]interface{}) if mediaSettings != nil && len(mediaSettings) > 0 { - settings[sdkType] = buildSdkMediaUtilization(mediaSettings) + settings[sdkType] = routingUtilization.BuildSdkMediaUtilization(mediaSettings) } } diff --git a/genesyscloud/resource_genesyscloud_user_test.go b/genesyscloud/resource_genesyscloud_user_test.go index 37c39f245..c064114ea 100644 --- a/genesyscloud/resource_genesyscloud_user_test.go +++ b/genesyscloud/resource_genesyscloud_user_test.go @@ -6,6 +6,8 @@ import ( "strconv" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" + routingUtilization "terraform-provider-genesyscloud/genesyscloud/routing_utilization" + routingUtilizationLabel "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" "terraform-provider-genesyscloud/genesyscloud/util" "testing" "time" @@ -14,7 +16,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceUserBasic(t *testing.T) { @@ -731,11 +733,11 @@ func TestAccResourceUserroutingUtil(t *testing.T) { email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), ), ), Check: resource.ComposeTestCheckFunc( @@ -764,11 +766,11 @@ func TestAccResourceUserroutingUtil(t *testing.T) { email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), ), ), Check: resource.ComposeTestCheckFunc( @@ -797,11 +799,11 @@ func TestAccResourceUserroutingUtil(t *testing.T) { email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeEmail)), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), ), ), Check: resource.ComposeTestCheckFunc( @@ -864,7 +866,7 @@ func TestAccResourceUserroutingUtilWithLabels(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) - if err := checkIfLabelsAreEnabled(); err != nil { + if err := routingUtilizationLabel.CheckIfLabelsAreEnabled(); err != nil { t.Skipf("%v", err) // be sure to skip the test and not fail it } }, @@ -872,21 +874,21 @@ func TestAccResourceUserroutingUtilWithLabels(t *testing.T) { Steps: []resource.TestStep{ { // Create with utilization settings - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + - GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + generateUserWithCustomAttrs( userResource1, email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), - generateLabelUtilization(redLabelResource, maxCapacity1), - generateLabelUtilization(blueLabelResource, maxCapacity1, redLabelResource), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity1), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity1, redLabelResource), ), ), Check: resource.ComposeTestCheckFunc( @@ -914,21 +916,21 @@ func TestAccResourceUserroutingUtilWithLabels(t *testing.T) { }, { // Update utilization settings and set different org-level settings - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + - GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + generateUserWithCustomAttrs( userResource1, email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateLabelUtilization(redLabelResource, maxCapacity2), - generateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity2), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), ), ), Check: resource.ComposeTestCheckFunc( @@ -956,21 +958,21 @@ func TestAccResourceUserroutingUtilWithLabels(t *testing.T) { }, { // Ensure max capacity can be set to 0 - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + - GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + generateUserWithCustomAttrs( userResource1, email1, userName, generateUserRoutingUtil( - generateRoutingUtilMediaType("call", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), - generateLabelUtilization(redLabelResource, maxCapacity0), - generateLabelUtilization(blueLabelResource, maxCapacity0, redLabelResource), + routingUtilization.GenerateRoutingUtilMediaType("call", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeEmail)), + routingUtilization.GenerateRoutingUtilMediaType("callback", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("chat", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("email", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilization.GenerateRoutingUtilMediaType("message", maxCapacity0, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity0), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity0, redLabelResource), ), ), Check: resource.ComposeTestCheckFunc( diff --git a/genesyscloud/resource_genesyscloud_widget_deployment.go b/genesyscloud/resource_genesyscloud_widget_deployment.go index 9ca823d39..54ef064af 100644 --- a/genesyscloud/resource_genesyscloud_widget_deployment.go +++ b/genesyscloud/resource_genesyscloud_widget_deployment.go @@ -4,10 +4,11 @@ import ( "context" "fmt" "log" - "net/url" + "strings" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" "terraform-provider-genesyscloud/genesyscloud/util/constants" + "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" @@ -15,40 +16,34 @@ import ( "terraform-provider-genesyscloud/genesyscloud/consistency_checker" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" - lists "terraform-provider-genesyscloud/genesyscloud/util/lists" + "terraform-provider-genesyscloud/genesyscloud/util/lists" - "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( - V1 = "v1" - V1HTTP = "v1-http" - V2 = "v2" - THIRDPARTY = "third-party" - HTTPSPROTOCOL = "https" - WEBSKINBASIC = "basic" - WEBSKINMODERN = "modern-caret-skin" + V1 = "v1" + V1HTTP = "v1-http" + V2 = "v2" + THIRDPARTY = "third-party" ) var ( + validClientTypes = []string{V1, V1HTTP, V2, THIRDPARTY} clientConfigSchemaResource = &schema.Resource{ Schema: map[string]*schema.Schema{ "webchat_skin": { - Description: "Skin for the webchat user. (basic, modern-caret-skin)", - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{WEBSKINBASIC, WEBSKINMODERN}, false), + Description: "Skin for the webchat user. (basic, modern-caret-skin)", + Type: schema.TypeString, + Optional: true, }, "authentication_url": { - Description: "Url endpoint to perform_authentication", - Type: schema.TypeString, - Required: false, - Optional: true, - ValidateDiagFunc: validateAuthURL, + Description: "Url endpoint to perform_authentication", + Type: schema.TypeString, + Optional: true, }, }, } @@ -69,78 +64,6 @@ func getAllWidgetDeployments(_ context.Context, clientConfig *platformclientv2.C return resources, nil } -func buildSdkAllowedDomains(d *schema.ResourceData) *[]string { - allowed_domains := []string{} - if domains, ok := d.GetOk("allowed_domains"); ok { - allowed_domains = lists.InterfaceListToStrings(domains.([]interface{})) - } - return &allowed_domains -} - -func parseSdkClientConfigData(d *schema.ResourceData) (webchatSkin *string, authenticationUrl *string) { - clientConfigSet := d.Get("client_config").(*schema.Set) - - if clientConfigSet != nil && len(clientConfigSet.List()) > 0 { - clientConfig := clientConfigSet.List()[0].(map[string]interface{}) - fields := make(map[string]string) - - for k, v := range clientConfig { - fields[k] = v.(string) - } - - webchatSkin := fields["webchat_skin"] - authUrl := fields["authentication_url"] - return &webchatSkin, &authUrl - } - return nil, nil -} - -func validateAuthURL(authUrl interface{}, _ cty.Path) diag.Diagnostics { - authUrlString := authUrl.(string) - u, err := url.Parse(authUrlString) - if err != nil { - return util.BuildDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Authorization url %s provided is not a valid URL", authUrlString), err) - } - - if u.Scheme == "" || u.Host == "" { - log.Printf("Scheme: %s", u.Scheme) - log.Printf("Host: %s", u.Host) - return util.BuildDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Authorization url %s provided is not valid url", authUrlString), fmt.Errorf("authorization url provided is not valid url")) - } - - if u.Scheme != HTTPSPROTOCOL { - return util.BuildDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Authorization url provided must begin with https"), fmt.Errorf("authorization url provided must begin with https")) - - } - - return nil -} - -func buildSDKClientConfig(clientType string, d *schema.ResourceData) (*platformclientv2.Widgetclientconfig, error) { - widgetClientConfig := &platformclientv2.Widgetclientconfig{} - clientConfig := d.Get("client_config").(*schema.Set) - - if (clientType == V1 || clientType == V1HTTP) && clientConfig.Len() == 0 { - return nil, fmt.Errorf("V1 and v1-http widget configurations must have a client_config defined. ") - } - - if clientType == V1 { - v1Client := &platformclientv2.Widgetclientconfigv1{} - - v1Client.WebChatSkin, v1Client.AuthenticationUrl = parseSdkClientConfigData(d) - - widgetClientConfig.V1 = v1Client - } - - if clientType == V1HTTP { - v1HttpClient := &platformclientv2.Widgetclientconfigv1http{} - v1HttpClient.WebChatSkin, v1HttpClient.AuthenticationUrl = parseSdkClientConfigData(d) - widgetClientConfig.V1Http = v1HttpClient - } - - return widgetClientConfig, nil -} - func WidgetDeploymentExporter() *resourceExporter.ResourceExporter { return &resourceExporter.ResourceExporter{ GetResourcesFunc: provider.GetAllWithPooledClient(getAllWidgetDeployments), @@ -192,56 +115,38 @@ func ResourceWidgetDeployment() *schema.Resource { Description: "The list of domains that are approved to use this Deployment; the list will be added to CORS headers for ease of web use", Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, - Required: false, Optional: true, }, "client_type": { - Description: "The type of display widget for which this Deployment is configured, which controls the administrator settings shown.Valid values: v1, v2, v1-http, third-party.", + Description: "The type of display widget for which this Deployment is configured, which controls the administrator settings shown. Valid values: " + strings.Join(validClientTypes, ", "), Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice([]string{V1, V2, V1HTTP, THIRDPARTY}, false), + ValidateFunc: validation.StringInSlice(validClientTypes, false), }, "client_config": { - Description: " The V1 and V1-http client configuration options that should be made available to the clients of this Deployment.", + Description: "The V1 and V1-http client configuration options that should be made available to the clients of this Deployment.", Type: schema.TypeSet, MaxItems: 1, Optional: true, - Elem: clientConfigSchemaResource, + // when this field is removed, V1 and V1HTTP should also be removed from validClientTypes list + Deprecated: "This field is inactive and will be removed entirely in a later version. Please use `v2_client_config` or `third_party_client_config` instead.", + Elem: clientConfigSchemaResource, + }, + "v2_client_config": { + Description: "The v2 client configuration options that should be made available to the clients of this Deployment.", + Type: schema.TypeMap, + Optional: true, + }, + "third_party_client_config": { + Description: "The third party client configuration options that should be made available to the clients of this Deployment.", + Type: schema.TypeMap, + Optional: true, + ConflictsWith: []string{"v2_client_config"}, }, }, } } -func flattenClientConfig(clientType string, clientConfig platformclientv2.Widgetclientconfig) *schema.Set { - clientConfigSet := schema.NewSet(schema.HashResource(clientConfigSchemaResource), []interface{}{}) - - clientConfigMap := make(map[string]interface{}) - - if clientType == V1 { - if clientConfig.V1.WebChatSkin != nil { - clientConfigMap["webchat_skin"] = *clientConfig.V1.WebChatSkin - } - - if clientConfig.V1.AuthenticationUrl != nil { - clientConfigMap["authentication_url"] = *clientConfig.V1.AuthenticationUrl - } - } - - if clientType == V1HTTP { - if clientConfig.V1Http.WebChatSkin != nil { - clientConfigMap["webchat_skin"] = *clientConfig.V1Http.WebChatSkin - } - - if clientConfig.V1Http.AuthenticationUrl != nil { - clientConfigMap["authentication_url"] = *clientConfig.V1Http.AuthenticationUrl - } - } - - clientConfigSet.Add(clientConfigMap) - - return clientConfigSet -} - func readWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { sdkConfig := meta.(*provider.ProviderMeta).ClientConfig widgetsAPI := platformclientv2.NewWidgetsApiWithConfig(sdkConfig) @@ -259,47 +164,15 @@ func readWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta inte return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Failed to read widget deployment %s | error: %s", d.Id(), getErr), resp)) } - d.Set("name", *currentWidget.Name) - if currentWidget.Description != nil { - d.Set("description", *currentWidget.Description) - } else { - d.Set("description", nil) - } - - if currentWidget.AuthenticationRequired != nil { - d.Set("authentication_required", *currentWidget.AuthenticationRequired) - } else { - d.Set("authentication_required", nil) - } - - if currentWidget.Disabled != nil { - d.Set("disabled", *currentWidget.Disabled) - } else { - d.Set("disabled", nil) - } - - if currentWidget.Flow != nil { - d.Set("flow_id", *currentWidget.Flow.Id) - } else { - d.Set("flow_id", nil) - } - - if currentWidget.AllowedDomains != nil { - d.Set("allowed_domains", *currentWidget.AllowedDomains) - } else { - d.Set("allowed_domains", nil) - } - - if currentWidget.ClientType != nil { - d.Set("client_type", *currentWidget.ClientType) - } else { - d.Set("client_type", nil) - } - + _ = d.Set("name", *currentWidget.Name) + resourcedata.SetNillableValue(d, "description", currentWidget.Description) + resourcedata.SetNillableValue(d, "authentication_required", currentWidget.AuthenticationRequired) + resourcedata.SetNillableValue(d, "disabled", currentWidget.Disabled) + resourcedata.SetNillableValue(d, "allowed_domains", currentWidget.AllowedDomains) + resourcedata.SetNillableValue(d, "client_type", currentWidget.ClientType) + resourcedata.SetNillableReference(d, "flow_id", currentWidget.Flow) if currentWidget.ClientConfig != nil { - d.Set("client_config", flattenClientConfig(*currentWidget.ClientType, *currentWidget.ClientConfig)) - } else { - d.Set("client_config", nil) + flattenClientConfig(d, *currentWidget.ClientConfig) } return cc.CheckState(d) @@ -308,30 +181,19 @@ func readWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta inte func createWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { name := d.Get("name").(string) - description := d.Get("description").(string) - auth_required := d.Get("authentication_required").(bool) - disabled := d.Get("disabled").(bool) - flowId := util.BuildSdkDomainEntityRef(d, "flow_id") - allowed_domains := buildSdkAllowedDomains(d) //Need to make this an array of strings. - client_type := d.Get("client_type").(string) - client_config, client_config_err := buildSDKClientConfig(client_type, d) - - if client_config_err != nil { - return util.BuildDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Failed to create widget deployment %s", name), client_config_err) - } sdkConfig := meta.(*provider.ProviderMeta).ClientConfig widgetsAPI := platformclientv2.NewWidgetsApiWithConfig(sdkConfig) createWidget := platformclientv2.Widgetdeployment{ Name: &name, - Description: &description, - AuthenticationRequired: &auth_required, - Disabled: &disabled, - Flow: flowId, - AllowedDomains: allowed_domains, - ClientType: &client_type, - ClientConfig: client_config, + Description: platformclientv2.String(d.Get("description").(string)), + AuthenticationRequired: platformclientv2.Bool(d.Get("authentication_required").(bool)), + Disabled: platformclientv2.Bool(d.Get("disabled").(bool)), + Flow: util.BuildSdkDomainEntityRef(d, "flow_id"), + AllowedDomains: buildSdkAllowedDomains(d), + ClientType: platformclientv2.String(d.Get("client_type").(string)), + ClientConfig: buildSDKClientConfig(d), } log.Printf("Creating widgets deployment %s", name) @@ -355,28 +217,6 @@ func createWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta in return readWidgetDeployment(ctx, d, meta) } -// Sometimes the Widget API creates 2 deployments due to a bug. This function will delete any duplicates -func deletePotentialDuplicateDeployments(widgetAPI *platformclientv2.WidgetsApi, name, id string, existingResourceIDMetaMap, newResourceIDMetaMap resourceExporter.ResourceIDMetaMap) { - for _, val := range existingResourceIDMetaMap { - for key1, val1 := range newResourceIDMetaMap { - if val.Name == val1.Name { - delete(newResourceIDMetaMap, key1) - break - } - } - } - - for key, val := range newResourceIDMetaMap { - if key != id && val.Name == name { - log.Printf("Deleting duplicate widget deployment %s", name) - _, err := widgetAPI.DeleteWidgetsDeployment(key) - if err != nil { - log.Printf("failed to delete widget deployment %s: %s", name, err) - } - } - } -} - func deleteWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { name := d.Get("name").(string) @@ -404,30 +244,19 @@ func deleteWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta in func updateWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { name := d.Get("name").(string) - description := d.Get("description").(string) - auth_required := d.Get("authentication_required").(bool) - disabled := d.Get("disabled").(bool) - flowId := util.BuildSdkDomainEntityRef(d, "flow_id") - allowed_domains := buildSdkAllowedDomains(d) //Need to make this an array of strings. - client_type := d.Get("client_type").(string) - client_config, client_config_err := buildSDKClientConfig(client_type, d) - - if client_config_err != nil { - return util.BuildDiagnosticError("genesyscloud_widget_deployment", fmt.Sprintf("Failed updating widget deployment %s", name), client_config_err) - } sdkConfig := meta.(*provider.ProviderMeta).ClientConfig widgetsAPI := platformclientv2.NewWidgetsApiWithConfig(sdkConfig) updateWidget := platformclientv2.Widgetdeployment{ Name: &name, - Description: &description, - AuthenticationRequired: &auth_required, - Disabled: &disabled, - Flow: flowId, - AllowedDomains: allowed_domains, - ClientType: &client_type, - ClientConfig: client_config, + Description: platformclientv2.String(d.Get("description").(string)), + AuthenticationRequired: platformclientv2.Bool(d.Get("authentication_required").(bool)), + Disabled: platformclientv2.Bool(d.Get("disabled").(bool)), + Flow: util.BuildSdkDomainEntityRef(d, "flow_id"), + AllowedDomains: buildSdkAllowedDomains(d), + ClientType: platformclientv2.String(d.Get("client_type").(string)), + ClientConfig: buildSDKClientConfig(d), } log.Printf("Updating widget deployment %s", name) @@ -440,3 +269,61 @@ func updateWidgetDeployment(ctx context.Context, d *schema.ResourceData, meta in log.Printf("Finished updating widget deployment %s", name) return readWidgetDeployment(ctx, d, meta) } + +func buildSDKClientConfig(d *schema.ResourceData) *platformclientv2.Widgetclientconfig { + v2ClientConfig := d.Get("v2_client_config") + if m, ok := v2ClientConfig.(map[string]any); ok && len(m) > 0 { + return &platformclientv2.Widgetclientconfig{V2: &v2ClientConfig} + } + thirdPartyClientConfig := d.Get("third_party_client_config") + if m, ok := thirdPartyClientConfig.(map[string]any); ok && len(m) > 0 { + return &platformclientv2.Widgetclientconfig{ThirdParty: &thirdPartyClientConfig} + } + return nil +} + +func buildSdkAllowedDomains(d *schema.ResourceData) *[]string { + if domains, ok := d.Get("allowed_domains").([]any); ok { + allowedDomains := lists.InterfaceListToStrings(domains) + return &allowedDomains + } + return nil +} + +func flattenClientConfig(d *schema.ResourceData, config platformclientv2.Widgetclientconfig) { + if config.ThirdParty != nil { + thirdParty := *config.ThirdParty + if thirdPartyMap, _ := thirdParty.(map[string]any); len(thirdPartyMap) > 0 { + _ = d.Set("third_party_client_config", thirdPartyMap) + return + } + } + if config.V2 != nil { + v2Config := *config.V2 + if v2ConfigMap, _ := v2Config.(map[string]any); len(v2ConfigMap) > 0 { + _ = d.Set("v2_client_config", v2ConfigMap) + } + } +} + +// deletePotentialDuplicateDeployments Sometimes the Widget API creates 2 deployments due to a bug. This function will delete any duplicates +func deletePotentialDuplicateDeployments(widgetAPI *platformclientv2.WidgetsApi, name, id string, existingResourceIDMetaMap, newResourceIDMetaMap resourceExporter.ResourceIDMetaMap) { + for _, val := range existingResourceIDMetaMap { + for key1, val1 := range newResourceIDMetaMap { + if val.Name == val1.Name { + delete(newResourceIDMetaMap, key1) + break + } + } + } + + for key, val := range newResourceIDMetaMap { + if key != id && val.Name == name { + log.Printf("Deleting duplicate widget deployment %s", name) + _, err := widgetAPI.DeleteWidgetsDeployment(key) + if err != nil { + log.Printf("failed to delete widget deployment %s: %s", name, err) + } + } + } +} diff --git a/genesyscloud/resource_genesyscloud_widget_deployment_test.go b/genesyscloud/resource_genesyscloud_widget_deployment_test.go index e3552fd4f..2f4b56c25 100644 --- a/genesyscloud/resource_genesyscloud_widget_deployment_test.go +++ b/genesyscloud/resource_genesyscloud_widget_deployment_test.go @@ -2,6 +2,7 @@ package genesyscloud import ( "fmt" + "strconv" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" @@ -10,7 +11,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type widgetDeploymentConfig struct { @@ -22,8 +23,8 @@ type widgetDeploymentConfig struct { flowID string allowedDomains []string clientType string - webChatSkin string - authenticationUrl string + v2ClientConfig map[string]string + thirdPartyClientConfig map[string]string } func deleteWidgetDeploymentWithName(name string) { @@ -35,139 +36,86 @@ func deleteWidgetDeploymentWithName(name string) { for _, widgetDeployment := range *widgetDeployments.Entities { if strings.Contains(*widgetDeployment.Name, name) { - widgetsAPI.DeleteWidgetsDeployment(*widgetDeployment.Id) + _, _ = widgetsAPI.DeleteWidgetsDeployment(*widgetDeployment.Id) } } } -func generateWidgetDeployV2(widgetDeploymentConfig *widgetDeploymentConfig) string { - return fmt.Sprintf(`resource "genesyscloud_widget_deployment" "%s" { - name = "%s" - description = "%s" - flow_id = "%s" - client_type = "%s" - authentication_required = %s - disabled = %s +func generateWidgetDeploymentResource(wdConfig *widgetDeploymentConfig) string { + var ( + v2ClientConfigStr string + thirdPartyConfigStr string + ) + if wdConfig.v2ClientConfig != nil { + v2ClientConfigStr = util.GenerateMapAttrWithMapProperties("v2_client_config", wdConfig.v2ClientConfig) + } + if wdConfig.thirdPartyClientConfig != nil { + thirdPartyConfigStr = util.GenerateMapAttrWithMapProperties("third_party_client_config", wdConfig.thirdPartyClientConfig) } - `, widgetDeploymentConfig.resourceID, - widgetDeploymentConfig.name, - widgetDeploymentConfig.description, - widgetDeploymentConfig.flowID, - widgetDeploymentConfig.clientType, - widgetDeploymentConfig.authenticationRequired, - widgetDeploymentConfig.disabled) -} - -func generateWidgetDeployV1(widgetDeploymentConfig *widgetDeploymentConfig) string { return fmt.Sprintf(`resource "genesyscloud_widget_deployment" "%s" { - name = "%s" - description = "%s" - flow_id = "%s" - client_type = "%s" + name = "%s" + description = %s + flow_id = %s + client_type = "%s" authentication_required = %s - disabled = %s - client_config { - authentication_url = "%s" - webchat_skin = "%s" - } + disabled = %s + %s + %s } - `, widgetDeploymentConfig.resourceID, - widgetDeploymentConfig.name, - widgetDeploymentConfig.description, - widgetDeploymentConfig.flowID, - widgetDeploymentConfig.clientType, - widgetDeploymentConfig.authenticationRequired, - widgetDeploymentConfig.disabled, - widgetDeploymentConfig.authenticationUrl, - widgetDeploymentConfig.webChatSkin) + `, wdConfig.resourceID, + wdConfig.name, + wdConfig.description, + wdConfig.flowID, + wdConfig.clientType, + wdConfig.authenticationRequired, + wdConfig.disabled, + v2ClientConfigStr, + thirdPartyConfigStr, + ) } -func TestAccResourceWidgetDeploymentV2Widget(t *testing.T) { - t.Parallel() - name := "My Test V2 Widget" - widgetDeployV2 := &widgetDeploymentConfig{ - resourceID: "myTestV2Widget", - name: name + uuid.NewString(), - description: "This is a test description", - flowID: uuid.NewString(), - clientType: "v2", - authenticationRequired: "false", - disabled: "true", - } - - _, err := provider.AuthorizeSdk() - if err != nil { - t.Fatal(err) +func copyWidgetDeploymentConfig(original widgetDeploymentConfig) *widgetDeploymentConfig { + var widgetCopy widgetDeploymentConfig + widgetCopy = widgetDeploymentConfig{ + resourceID: original.resourceID, + name: original.name, + description: original.description, + authenticationRequired: original.authenticationRequired, + disabled: original.disabled, + flowID: original.flowID, + allowedDomains: append(widgetCopy.allowedDomains, original.allowedDomains...), + clientType: original.clientType, + v2ClientConfig: original.v2ClientConfig, + thirdPartyClientConfig: original.thirdPartyClientConfig, } - deleteWidgetDeploymentWithName(name) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), - - Steps: []resource.TestStep{ - { - //create - Config: generateWidgetDeployV2(widgetDeployV2), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "name", widgetDeployV2.name), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "description", widgetDeployV2.description), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "flow_id", widgetDeployV2.flowID), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "client_type", widgetDeployV2.clientType), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "authentication_required", widgetDeployV2.authenticationRequired), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "disabled", widgetDeployV2.disabled), - ), - }, - { - //update - Config: generateWidgetDeployV2(&widgetDeploymentConfig{ - resourceID: widgetDeployV2.resourceID, - name: widgetDeployV2.name, - description: "New test description", - flowID: widgetDeployV2.flowID, - clientType: widgetDeployV2.clientType, - authenticationRequired: widgetDeployV2.authenticationRequired, - disabled: widgetDeployV2.disabled, - }), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "name", widgetDeployV2.name), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "description", "New test description"), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "flow_id", widgetDeployV2.flowID), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "client_type", widgetDeployV2.clientType), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "authentication_required", widgetDeployV2.authenticationRequired), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV2.resourceID, "disabled", widgetDeployV2.disabled), - ), - }, - { - // Import/Read - ResourceName: "genesyscloud_widget_deployment." + widgetDeployV2.resourceID, - ImportState: true, - ImportStateVerify: true, - }, - }, - CheckDestroy: testVerifyWidgetDeploymentDestroyed, - }) + return &widgetCopy } -func TestAccResourceWidgetDeploymentV1Widget(t *testing.T) { +func TestAccResourceWidgetDeploymentThirdPartyWidget(t *testing.T) { t.Parallel() - name := "My Text V1 Widget" - widgetDeployV1 := &widgetDeploymentConfig{ - resourceID: "myTestV1Widget", - name: name + uuid.NewString(), - description: "This is a test description", - flowID: uuid.NewString(), - clientType: "v1", - authenticationRequired: "true", - disabled: "true", - webChatSkin: "basic", - authenticationUrl: "https://localhost", + name := "My Test Third Party Widget" + uuid.NewString() + description := "This is a test description" + flowId := uuid.NewString() + widgetDeployment := &widgetDeploymentConfig{ + resourceID: "third_party_widget", + name: name, + description: strconv.Quote(description), + flowID: strconv.Quote(flowId), + clientType: V2, + authenticationRequired: util.FalseValue, + disabled: util.TrueValue, + thirdPartyClientConfig: map[string]string{ + "foo": strconv.Quote("bar"), + }, } - _, err := provider.AuthorizeSdk() - if err != nil { - t.Fatal(err) + updatedDescription := "New description" + widgetDeploymentUpdate := copyWidgetDeploymentConfig(*widgetDeployment) + widgetDeploymentUpdate.description = strconv.Quote(updatedDescription) + widgetDeploymentUpdate.thirdPartyClientConfig = map[string]string{ + "foo": strconv.Quote("bar2"), } + deleteWidgetDeploymentWithName(name) resource.Test(t, resource.TestCase{ @@ -177,43 +125,33 @@ func TestAccResourceWidgetDeploymentV1Widget(t *testing.T) { Steps: []resource.TestStep{ { //create - Config: generateWidgetDeployV1(widgetDeployV1), + Config: generateWidgetDeploymentResource(widgetDeployment), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "name", widgetDeployV1.name), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "description", widgetDeployV1.description), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "flow_id", widgetDeployV1.flowID), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "client_type", widgetDeployV1.clientType), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "authentication_required", widgetDeployV1.authenticationRequired), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "disabled", widgetDeployV1.disabled), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "client_config.0.authentication_url", widgetDeployV1.authenticationUrl), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "client_config.0.webchat_skin", widgetDeployV1.webChatSkin), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "name", name), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "description", description), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "flow_id", flowId), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "client_type", widgetDeployment.clientType), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "authentication_required", widgetDeployment.authenticationRequired), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "disabled", widgetDeployment.disabled), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "third_party_client_config.foo", "bar"), ), }, { //update - Config: generateWidgetDeployV1(&widgetDeploymentConfig{ - resourceID: widgetDeployV1.resourceID, - name: widgetDeployV1.name, - description: "New test description", - flowID: widgetDeployV1.flowID, - clientType: widgetDeployV1.clientType, - authenticationRequired: widgetDeployV1.authenticationRequired, - disabled: widgetDeployV1.disabled, - webChatSkin: widgetDeployV1.webChatSkin, - authenticationUrl: widgetDeployV1.authenticationUrl, - }), + Config: generateWidgetDeploymentResource(widgetDeploymentUpdate), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "name", widgetDeployV1.name), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "description", "New test description"), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "flow_id", widgetDeployV1.flowID), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "client_type", widgetDeployV1.clientType), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "authentication_required", widgetDeployV1.authenticationRequired), - resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployV1.resourceID, "disabled", widgetDeployV1.disabled), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "name", name), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "description", updatedDescription), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "flow_id", flowId), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "client_type", widgetDeployment.clientType), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "authentication_required", widgetDeployment.authenticationRequired), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "disabled", widgetDeployment.disabled), + resource.TestCheckResourceAttr("genesyscloud_widget_deployment."+widgetDeployment.resourceID, "third_party_client_config.foo", "bar2"), ), }, { // Import/Read - ResourceName: "genesyscloud_widget_deployment." + widgetDeployV1.resourceID, + ResourceName: "genesyscloud_widget_deployment." + widgetDeployment.resourceID, ImportState: true, ImportStateVerify: true, }, diff --git a/genesyscloud/responsemanagement_library/genesyscloud_responsemanagement_library_proxy.go b/genesyscloud/responsemanagement_library/genesyscloud_responsemanagement_library_proxy.go index e7e23345e..9478205ec 100644 --- a/genesyscloud/responsemanagement_library/genesyscloud_responsemanagement_library_proxy.go +++ b/genesyscloud/responsemanagement_library/genesyscloud_responsemanagement_library_proxy.go @@ -3,7 +3,7 @@ package responsemanagement_library import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library.go b/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library.go index 0e2f0be41..2970dd174 100644 --- a/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library.go +++ b/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" diff --git a/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library_test.go b/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library_test.go index 3b1498207..2724c81d1 100644 --- a/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library_test.go +++ b/genesyscloud/responsemanagement_library/resource_genesyscloud_responsemanagement_library_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceResponseManagementLibrary(t *testing.T) { diff --git a/genesyscloud/responsemanagement_response/genesyscloud_responsemanagement_response_proxy.go b/genesyscloud/responsemanagement_response/genesyscloud_responsemanagement_response_proxy.go index c953cc583..70921cbd8 100644 --- a/genesyscloud/responsemanagement_response/genesyscloud_responsemanagement_response_proxy.go +++ b/genesyscloud/responsemanagement_response/genesyscloud_responsemanagement_response_proxy.go @@ -3,7 +3,7 @@ package responsemanagement_response import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" ) diff --git a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response.go b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response.go index bdfc740c5..5e7dec46c 100644 --- a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response.go +++ b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_test.go b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_test.go index b3ea85af4..c9dbca7a6 100644 --- a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_test.go +++ b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_test.go @@ -16,7 +16,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceResponseManagementResponseFooterField(t *testing.T) { diff --git a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_utils.go b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_utils.go index de743a6d8..f2dd8555f 100644 --- a/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_utils.go +++ b/genesyscloud/responsemanagement_response/resource_genesyscloud_responsemanagement_response_utils.go @@ -2,7 +2,7 @@ package responsemanagement_response import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util" "terraform-provider-genesyscloud/genesyscloud/util/lists" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" diff --git a/genesyscloud/responsemanagement_responseasset/genesyscloud_responsemanagement_responseasset_proxy.go b/genesyscloud/responsemanagement_responseasset/genesyscloud_responsemanagement_responseasset_proxy.go index 7280c1cb2..fe64370e1 100644 --- a/genesyscloud/responsemanagement_responseasset/genesyscloud_responsemanagement_responseasset_proxy.go +++ b/genesyscloud/responsemanagement_responseasset/genesyscloud_responsemanagement_responseasset_proxy.go @@ -6,7 +6,7 @@ import ( "log" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset.go b/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset.go index 811114b7b..94a4a0c2e 100644 --- a/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset.go +++ b/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset_test.go b/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset_test.go index 5442793fb..7cb665c73 100644 --- a/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset_test.go +++ b/genesyscloud/responsemanagement_responseasset/resource_genesyscloud_responsemanagement_responseasset_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceResponseManagementResponseAsset(t *testing.T) { diff --git a/genesyscloud/routing_email_route/genesyscloud_routing_email_route_proxy.go b/genesyscloud/routing_email_route/genesyscloud_routing_email_route_proxy.go index 771340b62..6c8df29b3 100644 --- a/genesyscloud/routing_email_route/genesyscloud_routing_email_route_proxy.go +++ b/genesyscloud/routing_email_route/genesyscloud_routing_email_route_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route.go b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route.go index 0ede89be7..8bdffc449 100644 --- a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route.go +++ b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_test.go b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_test.go index 941e6c4c8..4cec51ca3 100644 --- a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_test.go +++ b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_test.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingEmailRoute(t *testing.T) { diff --git a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_utils.go b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_utils.go index 1eeb0cc73..c47783f4b 100644 --- a/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_utils.go +++ b/genesyscloud/routing_email_route/resource_genesyscloud_routing_email_route_utils.go @@ -8,7 +8,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/routing_queue/data_source_genesyscloud_routing_queue.go b/genesyscloud/routing_queue/data_source_genesyscloud_routing_queue.go index 67c47b23e..cd47befaa 100644 --- a/genesyscloud/routing_queue/data_source_genesyscloud_routing_queue.go +++ b/genesyscloud/routing_queue/data_source_genesyscloud_routing_queue.go @@ -11,10 +11,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" - rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/routing_queue/genesyscloud_routing_queue_init_test.go b/genesyscloud/routing_queue/genesyscloud_routing_queue_init_test.go index df495eba4..6a9d21473 100644 --- a/genesyscloud/routing_queue/genesyscloud_routing_queue_init_test.go +++ b/genesyscloud/routing_queue/genesyscloud_routing_queue_init_test.go @@ -4,6 +4,7 @@ import ( "sync" gcloud "terraform-provider-genesyscloud/genesyscloud" architectFlow "terraform-provider-genesyscloud/genesyscloud/architect_flow" + "terraform-provider-genesyscloud/genesyscloud/architect_user_prompt" "terraform-provider-genesyscloud/genesyscloud/group" "testing" @@ -38,6 +39,7 @@ func (r *registerTestInstance) registerTestResources() { providerResources["genesyscloud_routing_wrapupcode"] = gcloud.ResourceRoutingWrapupCode() providerResources["genesyscloud_flow"] = architectFlow.ResourceArchitectFlow() providerResources["genesyscloud_routing_skill_group"] = gcloud.ResourceRoutingSkillGroup() + providerResources["genesyscloud_architect_user_prompt"] = architect_user_prompt.ResourceArchitectUserPrompt() } // registerTestDataSources registers all data sources used in the tests. diff --git a/genesyscloud/routing_queue/genesyscloud_routing_queue_proxy.go b/genesyscloud/routing_queue/genesyscloud_routing_queue_proxy.go index 932d59931..3a06aa969 100644 --- a/genesyscloud/routing_queue/genesyscloud_routing_queue_proxy.go +++ b/genesyscloud/routing_queue/genesyscloud_routing_queue_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue.go b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue.go index c9704f65a..46ae0cba6 100644 --- a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue.go +++ b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue.go @@ -25,7 +25,7 @@ import ( "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var bullseyeExpansionTypeTimeout = "TIMEOUT_SECONDS" @@ -74,6 +74,7 @@ func createQueue(ctx context.Context, d *schema.ResourceData, meta interface{}) EmailInQueueFlow: util.BuildSdkDomainEntityRef(d, "email_in_queue_flow_id"), MessageInQueueFlow: util.BuildSdkDomainEntityRef(d, "message_in_queue_flow_id"), WhisperPrompt: util.BuildSdkDomainEntityRef(d, "whisper_prompt_id"), + OnHoldPrompt: util.BuildSdkDomainEntityRef(d, "on_hold_prompt_id"), AutoAnswerOnly: platformclientv2.Bool(d.Get("auto_answer_only").(bool)), CallingPartyName: platformclientv2.String(d.Get("calling_party_name").(string)), CallingPartyNumber: platformclientv2.String(d.Get("calling_party_number").(string)), @@ -192,6 +193,7 @@ func readQueue(ctx context.Context, d *schema.ResourceData, meta interface{}) di resourcedata.SetNillableReference(d, "message_in_queue_flow_id", currentQueue.MessageInQueueFlow) resourcedata.SetNillableReference(d, "email_in_queue_flow_id", currentQueue.EmailInQueueFlow) resourcedata.SetNillableReference(d, "whisper_prompt_id", currentQueue.WhisperPrompt) + resourcedata.SetNillableReference(d, "on_hold_prompt_id", currentQueue.OnHoldPrompt) resourcedata.SetNillableValue(d, "auto_answer_only", currentQueue.AutoAnswerOnly) resourcedata.SetNillableValue(d, "enable_transcription", currentQueue.EnableTranscription) resourcedata.SetNillableValue(d, "suppress_in_queue_call_recording", currentQueue.SuppressInQueueCallRecording) @@ -279,6 +281,7 @@ func updateQueue(ctx context.Context, d *schema.ResourceData, meta interface{}) EmailInQueueFlow: util.BuildSdkDomainEntityRef(d, "email_in_queue_flow_id"), MessageInQueueFlow: util.BuildSdkDomainEntityRef(d, "message_in_queue_flow_id"), WhisperPrompt: util.BuildSdkDomainEntityRef(d, "whisper_prompt_id"), + OnHoldPrompt: util.BuildSdkDomainEntityRef(d, "on_hold_prompt_id"), AutoAnswerOnly: platformclientv2.Bool(d.Get("auto_answer_only").(bool)), CallingPartyName: platformclientv2.String(d.Get("calling_party_name").(string)), CallingPartyNumber: platformclientv2.String(d.Get("calling_party_number").(string)), @@ -1030,9 +1033,15 @@ func updateQueueMembers(d *schema.ResourceData, sdkConfig *platformclientv2.Conf if len(newUserIds) > 0 { log.Printf("Sleeping for 10 seconds") time.Sleep(10 * time.Second) + + members, diagErr := getRoutingQueueMembers(d.Id(), "group", sdkConfig) + if diagErr != nil { + return diagErr + } + for _, userId := range newUserIds { - if err := verifyUserIsNotGroupMemberOfQueue(d.Id(), userId, sdkConfig); err != nil { - log.Println(err.Error()) + if err := verifyUserIsNotGroupMemberOfQueue(d.Id(), userId, members); err != nil { + return util.BuildDiagnosticError(resourceName, "failed to update queue member: ", err) } } } @@ -1115,39 +1124,12 @@ func removeAllExistingUserMembersFromQueue(queueId string, sdkConfig *platformcl } // verifyUserIsNotGroupMemberOfQueue Search through queue group members to verify that a given user is not a group member -func verifyUserIsNotGroupMemberOfQueue(queueId, userId string, sdkConfig *platformclientv2.Configuration) error { - var ( - userName string - routingApi = platformclientv2.NewRoutingApiWithConfig(sdkConfig) - usersApi = platformclientv2.NewUsersApiWithConfig(sdkConfig) - ) - +func verifyUserIsNotGroupMemberOfQueue(queueId, userId string, members []platformclientv2.Queuemember) error { log.Printf("verifying that member '%s' is not assinged to the queue '%s' via a group", userId, queueId) - // Read name of user to filter results when listing members of queue - log.Printf("reading user %s to fetch name", userId) - user, _, err := usersApi.GetUser(userId, nil, "", "") - if err != nil { - log.Printf("Failed to read name of user '%s' inside verifyUserIsNotGroupMemberOfQueue: %s. Queue ID: %s", userId, err, queueId) - } else { - userName = *user.Name - log.Printf("read user %s %s", userId, userName) - } - - const pageSize = 100 - for pageNum := 1; ; pageNum++ { - users, resp, err := sdkGetRoutingQueueMembers(queueId, "group", userName, pageNum, pageSize, routingApi) - if err != nil || resp.StatusCode != http.StatusOK { - log.Printf("Error requesting group members of queue '%s': %v. Cannot validate that user '%s' is not already assigned via a group", queueId, err, userId) - break - } - if users == nil || users.Entities == nil || len(*users.Entities) == 0 { - break - } - for _, member := range *users.Entities { - if userId == *member.Id { - return fmt.Errorf("member %s '%s' is already assigned to queue '%s' via a group, and therefore should not be assigned as a member", userName, userId, queueId) - } + for _, member := range members { + if *member.Id == userId { + return fmt.Errorf("member %s is already assigned to queue %s via a group, and therefore should not be assigned as a member", userId, queueId) } } @@ -1207,25 +1189,25 @@ func getRoutingQueueMembers(queueID string, memberBy string, sdkConfig *platform log.Printf("%d members belong to queue %s", queueMembers, queueID) for pageNum := 1; ; pageNum++ { - users, resp, err := sdkGetRoutingQueueMembers(queueID, memberBy, "", pageNum, pageSize, api) + users, resp, err := sdkGetRoutingQueueMembers(queueID, memberBy, pageNum, pageSize, api) if err != nil || resp.StatusCode != http.StatusOK { return nil, util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to query users for queue %s error: %s", queueID, err), resp) } if users == nil || users.Entities == nil || len(*users.Entities) == 0 { membersFound := len(members) log.Printf("%d queue members found for queue %s", membersFound, queueID) + if membersFound != queueMembers { log.Printf("Member count is not equal to queue member found for queue %s, Correlation Id: %s", queueID, resp.CorrelationID) } return members, nil } - for _, user := range *users.Entities { - members = append(members, user) - } + + members = append(members, *users.Entities...) } } -func sdkGetRoutingQueueMembers(queueID, memberBy, name string, pageNumber, pageSize int, api *platformclientv2.RoutingApi) (*platformclientv2.Queuememberentitylisting, *platformclientv2.APIResponse, error) { +func sdkGetRoutingQueueMembers(queueID, memberBy string, pageNumber, pageSize int, api *platformclientv2.RoutingApi) (*platformclientv2.Queuememberentitylisting, *platformclientv2.APIResponse, error) { // SDK does not support nil values for boolean query params yet, so we must manually construct this HTTP request for now apiClient := &api.Configuration.APIClient @@ -1254,9 +1236,6 @@ func sdkGetRoutingQueueMembers(queueID, memberBy, name string, pageNumber, pageS if memberBy != "" { queryParams["memberBy"] = memberBy } - if name != "" { - queryParams["name"] = name - } headerParams["Content-Type"] = "application/json" headerParams["Accept"] = "application/json" diff --git a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_schema.go b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_schema.go index 896ea6e8a..58d7e83af 100644 --- a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_schema.go +++ b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_schema.go @@ -380,6 +380,11 @@ func ResourceRoutingQueue() *schema.Resource { Type: schema.TypeString, Optional: true, }, + "on_hold_prompt_id": { + Description: "The audio to be played when calls on this queue are on hold. If not configured, the default on-hold music will play.", + Type: schema.TypeString, + Optional: true, + }, "auto_answer_only": { Description: "Specifies whether the configured whisper should play for all ACD calls, or only for those which are auto-answered.", Type: schema.TypeBool, @@ -507,6 +512,7 @@ func RoutingQueueExporter() *resourceExporter.ResourceExporter { "email_in_queue_flow_id": {RefType: "genesyscloud_flow"}, "message_in_queue_flow_id": {RefType: "genesyscloud_flow"}, "whisper_prompt_id": {RefType: "genesyscloud_architect_user_prompt"}, + "on_hold_prompt_id": {RefType: "genesyscloud_architect_user_prompt"}, "outbound_messaging_sms_address_id": {}, // Ref type not yet defined "default_script_ids.*": {RefType: "genesyscloud_script"}, // Ref type not yet defined "outbound_email_address.route_id": {RefType: "genesyscloud_routing_email_route"}, diff --git a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_test.go b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_test.go index d4a8c70c1..20252e1db 100644 --- a/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_test.go +++ b/genesyscloud/routing_queue/resource_genesyscloud_routing_queue_test.go @@ -5,19 +5,27 @@ import ( "log" "strconv" "strings" + "sync" "terraform-provider-genesyscloud/genesyscloud" "terraform-provider-genesyscloud/genesyscloud/architect_flow" + "terraform-provider-genesyscloud/genesyscloud/architect_user_prompt" "terraform-provider-genesyscloud/genesyscloud/group" "terraform-provider-genesyscloud/genesyscloud/provider" "terraform-provider-genesyscloud/genesyscloud/util" featureToggles "terraform-provider-genesyscloud/genesyscloud/util/feature_toggles" + "terraform-provider-genesyscloud/genesyscloud/util/testrunner" "testing" "time" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +var ( + sdkConfig *platformclientv2.Configuration + mu sync.Mutex ) func TestAccResourceRoutingQueueBasic(t *testing.T) { @@ -523,6 +531,32 @@ func TestAccResourceRoutingQueueFlows(t *testing.T) { queueFlowInboundcallConfig1 = fmt.Sprintf("inboundCall:\n name: %s\n defaultLanguage: en-us\n startUpRef: ./menus/menu[mainMenu]\n initialGreeting:\n tts: Archy says hi!!!\n menus:\n - menu:\n name: Main Menu\n audio:\n tts: You are at the Main Menu, press 9 to disconnect.\n refId: mainMenu\n choices:\n - menuDisconnect:\n name: Disconnect\n dtmf: digit_9", queueFlowName1) messageInQueueFlowInboundcallConfig3 = fmt.Sprintf("inboundCall:\n name: %s\n defaultLanguage: en-us\n startUpRef: ./menus/menu[mainMenu]\n initialGreeting:\n tts: Archy says hi!!!!!\n menus:\n - menu:\n name: Main Menu\n audio:\n tts: You are at the Main Menu, press 9 to disconnect.\n refId: mainMenu\n choices:\n - menuDisconnect:\n name: Disconnect\n dtmf: digit_9", queueFlowName3) + + //variables for testing 'on_hold_prompt_id' + userPromptResource1 = "test-user_prompt_1" + userPromptName1 = "TestUserPrompt_1" + strings.Replace(uuid.NewString(), "-", "", -1) + userPromptDescription1 = "Test description" + userPromptResourceLang1 = "en-us" + userPromptResourceText1 = "This is a test greeting!" + userPromptResourceFileName2 = "../" + testrunner.GetTestDataPath("test-prompt-02.wav") + userPromptResourceTTS1 = "This is a test greeting!" + userPromptAsset1 = architect_user_prompt.UserPromptResourceStruct{ + Language: userPromptResourceLang1, + Tts_string: strconv.Quote(userPromptResourceTTS1), + Text: util.NullValue, + Filename: util.NullValue, + FileContentHash: util.NullValue, + } + userPromptAsset2 = architect_user_prompt.UserPromptResourceStruct{ + Language: userPromptResourceLang1, + Tts_string: util.NullValue, + Text: strconv.Quote(userPromptResourceText1), + Filename: strconv.Quote(userPromptResourceFileName2), + FileContentHash: userPromptResourceFileName2, + } + + userPromptResources1 = []*architect_user_prompt.UserPromptResourceStruct{&userPromptAsset1} + userPromptResources2 = []*architect_user_prompt.UserPromptResourceStruct{&userPromptAsset2} ) var homeDivisionName string @@ -586,17 +620,24 @@ func TestAccResourceRoutingQueueFlows(t *testing.T) { queueFlowFilePath3, messageInQueueFlowInboundcallConfig3, false, - ) + GenerateRoutingQueueResourceBasic( + ) + architect_user_prompt.GenerateUserPromptResource(&architect_user_prompt.UserPromptStruct{ + ResourceID: userPromptResource1, + Name: userPromptName1, + Description: strconv.Quote(userPromptDescription1), + Resources: userPromptResources1, + }) + GenerateRoutingQueueResourceBasic( queueResource1, queueName1, "queue_flow_id = genesyscloud_flow."+queueFlowResource1+".id", "email_in_queue_flow_id = genesyscloud_flow."+emailInQueueFlowResource1+".id", "message_in_queue_flow_id = genesyscloud_flow."+messageInQueueFlowResource1+".id", + "on_hold_prompt_id = genesyscloud_architect_user_prompt."+userPromptResource1+".id", ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "queue_flow_id", "genesyscloud_flow."+queueFlowResource1, "id"), resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "email_in_queue_flow_id", "genesyscloud_flow."+emailInQueueFlowResource1, "id"), resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "message_in_queue_flow_id", "genesyscloud_flow."+messageInQueueFlowResource1, "id"), + resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "on_hold_prompt_id", "genesyscloud_architect_user_prompt."+userPromptResource1, "id"), ), }, { @@ -616,17 +657,24 @@ func TestAccResourceRoutingQueueFlows(t *testing.T) { queueFlowFilePath3, messageInQueueFlowInboundcallConfig3, false, - ) + GenerateRoutingQueueResourceBasic( + ) + architect_user_prompt.GenerateUserPromptResource(&architect_user_prompt.UserPromptStruct{ + ResourceID: userPromptResource1, + Name: userPromptName1, + Description: strconv.Quote(userPromptDescription1), + Resources: userPromptResources2, + }) + GenerateRoutingQueueResourceBasic( queueResource1, queueName1, "queue_flow_id = genesyscloud_flow."+queueFlowResource2+".id", "email_in_queue_flow_id = genesyscloud_flow."+emailInQueueFlowResource2+".id", "message_in_queue_flow_id = genesyscloud_flow."+messageInQueueFlowResource2+".id", + "on_hold_prompt_id = genesyscloud_architect_user_prompt."+userPromptResource1+".id", ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "queue_flow_id", "genesyscloud_flow."+queueFlowResource2, "id"), resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "email_in_queue_flow_id", "genesyscloud_flow."+emailInQueueFlowResource2, "id"), resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "message_in_queue_flow_id", "genesyscloud_flow."+messageInQueueFlowResource2, "id"), + resource.TestCheckResourceAttrPair("genesyscloud_routing_queue."+queueResource1, "on_hold_prompt_id", "genesyscloud_architect_user_prompt."+userPromptResource1, "id"), func(s *terraform.State) error { time.Sleep(45 * time.Second) // Wait for 45 seconds for proper deletion of user return nil @@ -681,6 +729,10 @@ func TestAccResourceRoutingQueueMembers(t *testing.T) { ), }, { + PreConfig: func() { + // Wait for a specified duration to avoid runtime error + time.Sleep(30 * time.Second) + }, // Update with another queue member and modify rings Config: genesyscloud.GenerateBasicUserResource( queueMemberResource1, @@ -1088,6 +1140,7 @@ func TestAccResourceRoutingQueueMembersOutsideOfConfig(t *testing.T) { userEmail = fmt.Sprintf("user%s@test.com", strings.Replace(uuid.NewString(), "-", "", -1)) queueResourceId = "queue" queueName = "tf test queue " + uuid.NewString() + userID string ) queueResource := fmt.Sprintf(` @@ -1116,12 +1169,26 @@ resource "genesyscloud_user" "%s" { { Config: queueResource + userResource, ExpectNonEmptyPlan: false, + Check: resource.ComposeTestCheckFunc( + func(s *terraform.State) error { + rs, ok := s.RootModule().Resources["genesyscloud_user."+userResourceId] + if !ok { + return fmt.Errorf("not found: %s", "genesyscloud_user."+userResourceId) + } + userID = rs.Primary.ID + log.Printf("User ID: %s\n", userID) // Print user ID + return nil + }, + ), }, { // Import/Read ResourceName: "genesyscloud_routing_queue." + queueResourceId, ImportState: true, ImportStateVerify: true, + Check: resource.ComposeTestCheckFunc( + checkUserDeleted(userID), + ), }, }, CheckDestroy: testVerifyQueuesDestroyed, @@ -1477,3 +1544,45 @@ func generateUserWithCustomAttrs(resourceID string, email string, name string, a } `, resourceID, email, name, strings.Join(attrs, "\n")) } + +func checkUserDeleted(id string) resource.TestCheckFunc { + log.Printf("Fetching user with ID: %s\n", id) + return func(s *terraform.State) error { + maxAttempts := 18 + for i := 0; i < maxAttempts; i++ { + + deleted, err := isUserDeleted(id) + if err != nil { + return err + } + if deleted { + return nil + } + time.Sleep(10 * time.Second) + } + return fmt.Errorf("user %s was not deleted properly", id) + } +} + +func isUserDeleted(id string) (bool, error) { + mu.Lock() + defer mu.Unlock() + + usersAPI := platformclientv2.NewUsersApiWithConfig(sdkConfig) + // Attempt to get the user + _, response, err := usersAPI.GetUser(id, nil, "", "") + + // Check if the user is not found (deleted) + if response != nil && response.StatusCode == 404 { + return true, nil // User is deleted + } + + // Handle other errors + if err != nil { + log.Printf("Error fetching user: %v", err) + return false, err + } + + // If user is found, it means the user is not deleted + return false, nil +} diff --git a/genesyscloud/routing_queue_conditional_group_routing/genesyscloud_routing_queue_conditional_group_routing_proxy.go b/genesyscloud/routing_queue_conditional_group_routing/genesyscloud_routing_queue_conditional_group_routing_proxy.go index 362c8d5eb..8072bfcc7 100644 --- a/genesyscloud/routing_queue_conditional_group_routing/genesyscloud_routing_queue_conditional_group_routing_proxy.go +++ b/genesyscloud/routing_queue_conditional_group_routing/genesyscloud_routing_queue_conditional_group_routing_proxy.go @@ -3,7 +3,7 @@ package routing_queue_conditional_group_routing import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" routingQueue "terraform-provider-genesyscloud/genesyscloud/routing_queue" ) diff --git a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing.go b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing.go index 028b585e7..a0d3b94a3 100644 --- a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing.go +++ b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "strings" consistencyChecker "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_test.go b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_test.go index 03d3566a0..dadf085c8 100644 --- a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_test.go +++ b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_test.go @@ -18,7 +18,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( @@ -330,6 +330,7 @@ func generateUserWithCustomAttrs(resourceID string, email string, name string, a } `, resourceID, email, name, strings.Join(attrs, "\n")) } + func checkUserDeleted(id string) resource.TestCheckFunc { log.Printf("Fetching user with ID: %s\n", id) return func(s *terraform.State) error { diff --git a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_unit_test.go b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_unit_test.go index e71ff2d42..16b682245 100644 --- a/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_unit_test.go +++ b/genesyscloud/routing_queue_conditional_group_routing/resource_genesyscloud_routing_queue_conditional_group_routing_unit_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "net/http" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/routing_queue_outbound_email_address/genesyscloud_routing_queue_outbound_email_address_proxy.go b/genesyscloud/routing_queue_outbound_email_address/genesyscloud_routing_queue_outbound_email_address_proxy.go index 0972d7cd5..e12da7114 100644 --- a/genesyscloud/routing_queue_outbound_email_address/genesyscloud_routing_queue_outbound_email_address_proxy.go +++ b/genesyscloud/routing_queue_outbound_email_address/genesyscloud_routing_queue_outbound_email_address_proxy.go @@ -3,7 +3,7 @@ package routing_queue_outbound_email_address import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" routingQueue "terraform-provider-genesyscloud/genesyscloud/routing_queue" ) diff --git a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address.go b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address.go index 97a3e55b2..e94fdaee1 100644 --- a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address.go +++ b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "strings" consistencyChecker "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_test.go b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_test.go index 8bf3a50b9..cfac071ce 100644 --- a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_test.go +++ b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "os" "strings" diff --git a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_unit_test.go b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_unit_test.go index 4f0368308..6ef38582c 100644 --- a/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_unit_test.go +++ b/genesyscloud/routing_queue_outbound_email_address/resource_genesyscloud_routing_queue_outbound_email_address_unit_test.go @@ -4,7 +4,7 @@ import ( "context" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "net/http" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/routing_settings/genesyscloud_routing_settings_init_test.go b/genesyscloud/routing_settings/genesyscloud_routing_settings_init_test.go new file mode 100644 index 000000000..7e9c341f7 --- /dev/null +++ b/genesyscloud/routing_settings/genesyscloud_routing_settings_init_test.go @@ -0,0 +1,40 @@ +package routing_settings + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "sync" + "testing" +) + +// providerResources holds a map of all registered resources +var providerResources map[string]*schema.Resource + +type registerTestInstance struct { + resourceMapMutex sync.RWMutex +} + +// registerTestResources registers all resources used in the tests +func (r *registerTestInstance) registerTestResources() { + r.resourceMapMutex.Lock() + defer r.resourceMapMutex.Unlock() + + providerResources[resourceName] = ResourceRoutingSettings() +} + +// initTestResources initializes all test resources and data sources. +func initTestResources() { + providerResources = make(map[string]*schema.Resource) + + regInstance := ®isterTestInstance{} + + regInstance.registerTestResources() +} + +// 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 routing_settings package + initTestResources() + + // Run the test suite for the routing_settings package + m.Run() +} diff --git a/genesyscloud/routing_settings/genesyscloud_routing_settings_proxy.go b/genesyscloud/routing_settings/genesyscloud_routing_settings_proxy.go new file mode 100644 index 000000000..111dcf6f1 --- /dev/null +++ b/genesyscloud/routing_settings/genesyscloud_routing_settings_proxy.go @@ -0,0 +1,110 @@ +package routing_settings + +import ( + "context" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +var internalProxy *routingSettingsProxy + +type getRoutingSettingsFunc func(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) +type updateRoutingSettingsFunc func(ctx context.Context, p *routingSettingsProxy, routingSettings *platformclientv2.Routingsettings) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) +type deleteRoutingSettingsFunc func(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.APIResponse, error) + +type getRoutingSettingsContactCenterFunc func(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Contactcentersettings, *platformclientv2.APIResponse, error) +type updateRoutingSettingsContactCenterFunc func(ctx context.Context, p *routingSettingsProxy, contactCenterSettings platformclientv2.Contactcentersettings) (*platformclientv2.APIResponse, error) + +type getRoutingSettingsTranscriptionFunc func(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) +type updateRoutingSettingsTranscriptionFunc func(ctx context.Context, p *routingSettingsProxy, transcriptionSettings platformclientv2.Transcriptionsettings) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) + +type routingSettingsProxy struct { + clientConfig *platformclientv2.Configuration + routingSettingsApi *platformclientv2.RoutingApi + getRoutingSettingsAttr getRoutingSettingsFunc + updateRoutingSettingsAttr updateRoutingSettingsFunc + deleteRoutingSettingsAttr deleteRoutingSettingsFunc + + getRoutingSettingsContactCenterAttr getRoutingSettingsContactCenterFunc + updateRoutingSettingsContactCenterAttr updateRoutingSettingsContactCenterFunc + + getRoutingSettingsTranscriptionAttr getRoutingSettingsTranscriptionFunc + updateRoutingSettingsTranscriptionAttr updateRoutingSettingsTranscriptionFunc +} + +func newRoutingSettingsProxy(clientConfig *platformclientv2.Configuration) *routingSettingsProxy { + api := platformclientv2.NewRoutingApiWithConfig(clientConfig) + return &routingSettingsProxy{ + clientConfig: clientConfig, + routingSettingsApi: api, + getRoutingSettingsAttr: getRoutingSettingsFn, + updateRoutingSettingsAttr: updateRoutingSettingsFn, + deleteRoutingSettingsAttr: deleteRoutingSettingsFn, + getRoutingSettingsContactCenterAttr: getRoutingSettingsContactCenterFn, + updateRoutingSettingsContactCenterAttr: updateRoutingSettingsContactCenterFn, + getRoutingSettingsTranscriptionAttr: getRoutingSettingsTranscriptionFn, + updateRoutingSettingsTranscriptionAttr: updateRoutingSettingsTranscriptionFn, + } +} + +func getRoutingSettingsProxy(clientConfig *platformclientv2.Configuration) *routingSettingsProxy { + if internalProxy == nil { + internalProxy = newRoutingSettingsProxy(clientConfig) + } + return internalProxy +} + +func (p *routingSettingsProxy) getRoutingSettings(ctx context.Context) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) { + return p.getRoutingSettingsAttr(ctx, p) +} + +func (p *routingSettingsProxy) updateRoutingSettings(ctx context.Context, routingSettings *platformclientv2.Routingsettings) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) { + return p.updateRoutingSettingsAttr(ctx, p, routingSettings) +} + +func (p *routingSettingsProxy) deleteRoutingSettings(ctx context.Context) (*platformclientv2.APIResponse, error) { + return p.deleteRoutingSettingsAttr(ctx, p) +} + +func (p *routingSettingsProxy) getRoutingSettingsContactCenter(ctx context.Context) (*platformclientv2.Contactcentersettings, *platformclientv2.APIResponse, error) { + return p.getRoutingSettingsContactCenterAttr(ctx, p) +} + +func (p *routingSettingsProxy) updateRoutingSettingsContactCenter(ctx context.Context, contactCenterSettings platformclientv2.Contactcentersettings) (*platformclientv2.APIResponse, error) { + return p.updateRoutingSettingsContactCenterAttr(ctx, p, contactCenterSettings) +} + +func (p *routingSettingsProxy) getRoutingSettingsTranscription(ctx context.Context) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) { + return p.getRoutingSettingsTranscriptionAttr(ctx, p) +} + +func (p *routingSettingsProxy) updateRoutingSettingsTranscription(ctx context.Context, transcriptionSettings platformclientv2.Transcriptionsettings) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) { + return p.updateRoutingSettingsTranscriptionAttr(ctx, p, transcriptionSettings) +} + +func getRoutingSettingsFn(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) { + return p.routingSettingsApi.GetRoutingSettings() +} + +func updateRoutingSettingsFn(ctx context.Context, p *routingSettingsProxy, routingSettings *platformclientv2.Routingsettings) (*platformclientv2.Routingsettings, *platformclientv2.APIResponse, error) { + return p.routingSettingsApi.PutRoutingSettings(*routingSettings) +} + +func deleteRoutingSettingsFn(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.APIResponse, error) { + return p.routingSettingsApi.DeleteRoutingSettings() +} + +func getRoutingSettingsContactCenterFn(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Contactcentersettings, *platformclientv2.APIResponse, error) { + return p.routingSettingsApi.GetRoutingSettingsContactcenter() +} + +func updateRoutingSettingsContactCenterFn(ctx context.Context, p *routingSettingsProxy, contactCenterSettings platformclientv2.Contactcentersettings) (*platformclientv2.APIResponse, error) { + return p.routingSettingsApi.PatchRoutingSettingsContactcenter(contactCenterSettings) +} + +func getRoutingSettingsTranscriptionFn(ctx context.Context, p *routingSettingsProxy) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) { + return p.routingSettingsApi.GetRoutingSettingsTranscription() +} + +func updateRoutingSettingsTranscriptionFn(ctx context.Context, p *routingSettingsProxy, transcriptionSettings platformclientv2.Transcriptionsettings) (*platformclientv2.Transcriptionsettings, *platformclientv2.APIResponse, error) { + return p.routingSettingsApi.PutRoutingSettingsTranscription(transcriptionSettings) +} diff --git a/genesyscloud/routing_settings/resource_genesyscloud_routing_settings.go b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings.go new file mode 100644 index 000000000..3f4a4f2e8 --- /dev/null +++ b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings.go @@ -0,0 +1,216 @@ +package routing_settings + +import ( + "context" + "fmt" + "log" + "terraform-provider-genesyscloud/genesyscloud/provider" + "terraform-provider-genesyscloud/genesyscloud/util" + "terraform-provider-genesyscloud/genesyscloud/util/constants" + "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + + "terraform-provider-genesyscloud/genesyscloud/consistency_checker" + + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +func getAllRoutingSettings(_ context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { + resources := make(resourceExporter.ResourceIDMetaMap) + resources["0"] = &resourceExporter.ResourceMeta{Name: "routing_settings"} + return resources, nil +} + +func createRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + log.Printf("Creating Routing Setting") + d.SetId("settings") + return updateRoutingSettings(ctx, d, meta) +} + +func readRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingSettingsProxy(sdkConfig) + cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingSettings(), constants.DefaultConsistencyChecks, resourceName) + + log.Printf("Reading routing settings") + + return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { + settings, resp, getErr := proxy.getRoutingSettings(ctx) + if getErr != nil { + if util.IsStatus404(resp) { + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read Routing Setting %s | error: %s", d.Id(), getErr), resp)) + } + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read Routing Setting %s | error: %s", d.Id(), getErr), resp)) + } + + resourcedata.SetNillableValue(d, "reset_agent_on_presence_change", settings.ResetAgentScoreOnPresenceChange) + + if diagErr := readRoutingSettingsContactCenter(ctx, d, proxy); diagErr != nil { + return retry.NonRetryableError(fmt.Errorf("%v", diagErr)) + } + + if diagErr := readRoutingSettingsTranscription(ctx, d, proxy); diagErr != nil { + return retry.NonRetryableError(fmt.Errorf("%v", diagErr)) + } + + log.Printf("Read Routing Setting") + return cc.CheckState(d) + }) +} + +func updateRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + resetAgentOnPresenceChange := d.Get("reset_agent_on_presence_change").(bool) + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingSettingsProxy(sdkConfig) + + log.Printf("Updating Routing Settings") + update := platformclientv2.Routingsettings{ + ResetAgentScoreOnPresenceChange: &resetAgentOnPresenceChange, + } + + diagErr := updateContactCenter(ctx, d, proxy) + if diagErr != nil { + return diagErr + } + + diagErr = updateTranscription(ctx, d, proxy) + if diagErr != nil { + return diagErr + } + + _, resp, err := proxy.updateRoutingSettings(ctx, &update) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to update routing settings %s error: %s", d.Id(), err), resp) + } + + time.Sleep(5 * time.Second) + + log.Printf("Updated Routing Settings") + return readRoutingSettings(ctx, d, meta) +} + +func deleteRoutingSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingSettingsProxy(sdkConfig) + + log.Printf("Resetting Routing Setting") + resp, err := proxy.deleteRoutingSettings(ctx) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to delete routing settings %s error: %s", d.Id(), err), resp) + } + + log.Printf("Reset Routing Settings") + return nil +} + +func readRoutingSettingsContactCenter(ctx context.Context, d *schema.ResourceData, proxy *routingSettingsProxy) diag.Diagnostics { + contactCenter, resp, getErr := proxy.getRoutingSettingsContactCenter(ctx) + if getErr != nil { + if util.IsStatus404(resp) { + return nil + } + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to read contact center for routing setting %s error: %s", d.Id(), getErr), resp) + } + + if contactCenter == nil { + _ = d.Set("contactcenter", nil) + return nil + } + + contactSettings := make(map[string]interface{}) + resourcedata.SetMapValueIfNotNil(contactSettings, "remove_skills_from_blind_transfer", contactCenter.RemoveSkillsFromBlindTransfer) + + _ = d.Set("contactcenter", []interface{}{contactSettings}) + return nil +} + +func updateContactCenter(ctx context.Context, d *schema.ResourceData, proxy *routingSettingsProxy) diag.Diagnostics { + var removeSkillsFromBlindTransfer bool + + if contactCenterConfig := d.Get("contactcenter"); contactCenterConfig != nil { + if contactCenterList := contactCenterConfig.([]interface{}); len(contactCenterList) > 0 { + contactCenterMap := contactCenterList[0].(map[string]interface{}) + + if contactCenterMap["remove_skills_from_blind_transfer"] != nil { + removeSkillsFromBlindTransfer = contactCenterMap["remove_skills_from_blind_transfer"].(bool) + } + + contactCenterSettings := platformclientv2.Contactcentersettings{ + RemoveSkillsFromBlindTransfer: &removeSkillsFromBlindTransfer, + } + + resp, err := proxy.updateRoutingSettingsContactCenter(ctx, contactCenterSettings) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to update contact center for routing settings %s error: %s", d.Id(), err), resp) + } + } + } + return nil +} + +func readRoutingSettingsTranscription(ctx context.Context, d *schema.ResourceData, proxy *routingSettingsProxy) diag.Diagnostics { + transcription, resp, getErr := proxy.getRoutingSettingsTranscription(ctx) + if getErr != nil { + if util.IsStatus404(resp) { + return nil + } + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to read contact center for routing settings %s error: %s", d.Id(), getErr), resp) + } + + if transcription == nil { + _ = d.Set("transcription", nil) + return nil + } + + transcriptionSettings := make(map[string]interface{}) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "transcription", transcription.Transcription) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "transcription_confidence_threshold", transcription.TranscriptionConfidenceThreshold) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "low_latency_transcription_enabled", transcription.LowLatencyTranscriptionEnabled) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "content_search_enabled", transcription.ContentSearchEnabled) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "pci_dss_redaction_enabled", transcription.PciDssRedactionEnabled) + resourcedata.SetMapValueIfNotNil(transcriptionSettings, "pii_redaction_enabled", transcription.PiiRedactionEnabled) + + _ = d.Set("transcription", []interface{}{transcriptionSettings}) + return nil +} + +func updateTranscription(ctx context.Context, d *schema.ResourceData, proxy *routingSettingsProxy) diag.Diagnostics { + transcriptionRequest := platformclientv2.Transcriptionsettings{} + + if transcriptionConfigList, ok := d.Get("transcription").([]interface{}); ok && len(transcriptionConfigList) > 0 { + transcriptionMap, ok := transcriptionConfigList[0].(map[string]interface{}) + if !ok { + return nil + } + if transcription, ok := transcriptionMap["transcription"].(string); ok && transcription != "" { + transcriptionRequest.Transcription = &transcription + } + if transcriptionConfidenceThreshold, ok := transcriptionMap["transcription_confidence_threshold"].(int); ok { + transcriptionRequest.TranscriptionConfidenceThreshold = &transcriptionConfidenceThreshold + } + if lowLatencyTranscriptionEnabled, ok := transcriptionMap["low_latency_transcription_enabled"].(bool); ok { + transcriptionRequest.LowLatencyTranscriptionEnabled = &lowLatencyTranscriptionEnabled + } + if contentSearchEnabled, ok := transcriptionMap["content_search_enabled"].(bool); ok { + transcriptionRequest.ContentSearchEnabled = &contentSearchEnabled + } + if pciEnabled, ok := transcriptionMap["pci_dss_redaction_enabled"].(bool); ok { + transcriptionRequest.PciDssRedactionEnabled = &pciEnabled + } + if piiEnabled, ok := transcriptionMap["pii_redaction_enabled"].(bool); ok { + transcriptionRequest.PiiRedactionEnabled = &piiEnabled + } + + _, resp, err := proxy.updateRoutingSettingsTranscription(ctx, transcriptionRequest) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to update Transcription for routing settings %s error: %s", d.Id(), err), resp) + } + } + return nil +} diff --git a/genesyscloud/routing_settings/resource_genesyscloud_routing_settings_schema.go b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings_schema.go new file mode 100644 index 000000000..0f0d50f28 --- /dev/null +++ b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings_schema.go @@ -0,0 +1,101 @@ +package routing_settings + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "terraform-provider-genesyscloud/genesyscloud/provider" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" +) + +var resourceName = "genesyscloud_routing_settings" + +func SetRegistrar(regInstance registrar.Registrar) { + regInstance.RegisterResource(resourceName, ResourceRoutingSettings()) + regInstance.RegisterExporter(resourceName, RoutingSettingsExporter()) +} + +func ResourceRoutingSettings() *schema.Resource { + return &schema.Resource{ + Description: "An organization's routing settings", + + CreateContext: provider.CreateWithPooledClient(createRoutingSettings), + ReadContext: provider.ReadWithPooledClient(readRoutingSettings), + UpdateContext: provider.UpdateWithPooledClient(updateRoutingSettings), + DeleteContext: provider.DeleteWithPooledClient(deleteRoutingSettings), + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + SchemaVersion: 1, + Schema: map[string]*schema.Schema{ + "reset_agent_on_presence_change": { + Description: "Reset agent score when agent presence changes from off-queue to on-queue", + Type: schema.TypeBool, + Optional: true, + Computed: true, + }, + "contactcenter": { + Description: "Contact center settings", + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "remove_skills_from_blind_transfer": { + Description: "Strip skills from transfer", + Type: schema.TypeBool, + Optional: true, + }, + }, + }, + }, + "transcription": { + Description: "Transcription settings", + Type: schema.TypeList, + Optional: true, + Computed: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "transcription": { + Description: "Setting to enable/disable transcription capability.Valid values: Disabled, EnabledGlobally, EnabledQueueFlow", + Type: schema.TypeString, + Optional: true, + }, + "transcription_confidence_threshold": { + Description: "Configure confidence threshold. The possible values are from 1 to 100", + Type: schema.TypeInt, + Optional: true, + }, + "low_latency_transcription_enabled": { + Description: "Boolean flag indicating whether low latency transcription via Notification API is enabled", + Type: schema.TypeBool, + Optional: true, + }, + "content_search_enabled": { + Description: "Setting to enable/disable content search", + Type: schema.TypeBool, + Optional: true, + }, + `pci_dss_redaction_enabled`: { + Description: `Setting to enable/disable PCI DSS Redaction`, + Optional: true, + Type: schema.TypeBool, + }, + `pii_redaction_enabled`: { + Description: `Setting to enable/disable PII Redaction`, + Optional: true, + Type: schema.TypeBool, + }, + }, + }, + }, + }, + } +} + +func RoutingSettingsExporter() *resourceExporter.ResourceExporter { + return &resourceExporter.ResourceExporter{ + GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingSettings), + } +} diff --git a/genesyscloud/resource_genesyscloud_routing_settings_test.go b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings_test.go similarity index 98% rename from genesyscloud/resource_genesyscloud_routing_settings_test.go rename to genesyscloud/routing_settings/resource_genesyscloud_routing_settings_test.go index 96b87f348..2539787b7 100644 --- a/genesyscloud/resource_genesyscloud_routing_settings_test.go +++ b/genesyscloud/routing_settings/resource_genesyscloud_routing_settings_test.go @@ -1,4 +1,4 @@ -package genesyscloud +package routing_settings import ( "fmt" @@ -17,7 +17,7 @@ func TestAccResourceRoutingSettingsBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + ProviderFactories: provider.GetProviderFactories(providerResources, nil), Steps: []resource.TestStep{ { // Create @@ -57,7 +57,7 @@ func TestAccResourceRoutingSettingsContactCenter(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + ProviderFactories: provider.GetProviderFactories(providerResources, nil), Steps: []resource.TestStep{ { // Create with contact center @@ -102,7 +102,7 @@ func TestAccResourceRoutingSettingsTranscription(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + ProviderFactories: provider.GetProviderFactories(providerResources, nil), Steps: []resource.TestStep{ { // Create with transcription diff --git a/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_proxy.go b/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_proxy.go index 950087dc4..4da161286 100644 --- a/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_proxy.go +++ b/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // Type definitions for each func on our proxy so we can easily mock them out later diff --git a/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_schema.go b/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_schema.go index c9a449d0c..edc7f69bf 100644 --- a/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_schema.go +++ b/genesyscloud/routing_sms_addresses/genesyscloud_routing_sms_addresses_schema.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) // SetRegistrar registers all the resources, data sources and exporters in the package @@ -68,7 +68,7 @@ func ResourceRoutingSmsAddress() *schema.Resource { Required: true, ForceNew: true, Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidateCountryCode, + ValidateDiagFunc: validators.ValidateCountryCode, }, `auto_correct_address`: { Description: `This is used when the address is created. If the value is not set or true, then the system will, if necessary, auto-correct the address you provide. Set this value to false if the system should not auto-correct the address.`, diff --git a/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses.go b/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses.go index 932dad163..d578d8b0c 100644 --- a/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses.go +++ b/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const resourceName = "genesyscloud_routing_sms_address" diff --git a/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses_test.go b/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses_test.go index a54f64e56..4d4185ee8 100644 --- a/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses_test.go +++ b/genesyscloud/routing_sms_addresses/resource_genesyscloud_routing_sms_addresses_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingSmsAddressesProdOrg(t *testing.T) { diff --git a/genesyscloud/routing_utilization/genesyscloud_routing_utilization_init_test.go b/genesyscloud/routing_utilization/genesyscloud_routing_utilization_init_test.go new file mode 100644 index 000000000..3a9ec469f --- /dev/null +++ b/genesyscloud/routing_utilization/genesyscloud_routing_utilization_init_test.go @@ -0,0 +1,47 @@ +package routing_utilization + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "sync" + "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" + "testing" +) + +/* +The genesyscloud_routing_utilization_init_test.go file is used to initialize the data sources and resources +used in testing the routing_utilization resource. +*/ + +// providerResources holds a map of all registered resources +var providerResources map[string]*schema.Resource + +type registerTestInstance struct { + resourceMapMutex sync.RWMutex +} + +// registerTestResources registers all resources used in the tests +func (r *registerTestInstance) registerTestResources() { + r.resourceMapMutex.Lock() + defer r.resourceMapMutex.Unlock() + + providerResources[resourceName] = ResourceRoutingUtilization() + providerResources["genesyscloud_routing_utilization_label"] = routing_utilization_label.ResourceRoutingUtilizationLabel() +} + +// initTestResources initializes all test resources and data sources. +func initTestResources() { + providerResources = make(map[string]*schema.Resource) + + regInstance := ®isterTestInstance{} + + regInstance.registerTestResources() +} + +// 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 package + initTestResources() + + // Run the test suite for the package + m.Run() +} diff --git a/genesyscloud/routing_utilization/genesyscloud_routing_utilization_proxy.go b/genesyscloud/routing_utilization/genesyscloud_routing_utilization_proxy.go new file mode 100644 index 000000000..776d9664a --- /dev/null +++ b/genesyscloud/routing_utilization/genesyscloud_routing_utilization_proxy.go @@ -0,0 +1,99 @@ +package routing_utilization + +import ( + "context" + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +var internalProxy *routingUtilizationProxy + +type getRoutingUtilizationFunc func(ctx context.Context, p *routingUtilizationProxy) (*platformclientv2.APIResponse, error) +type updateRoutingUtilizationFunc func(ctx context.Context, p *routingUtilizationProxy, request *platformclientv2.Utilizationrequest) (*platformclientv2.Utilizationresponse, *platformclientv2.APIResponse, error) +type deleteRoutingUtilizationFunc func(ctx context.Context, p *routingUtilizationProxy) (*platformclientv2.APIResponse, error) + +type updateDirectlyFunc func(ctx context.Context, p *routingUtilizationProxy, d *schema.ResourceData, utilizationRequest []interface{}) (*platformclientv2.APIResponse, error) + +type routingUtilizationProxy struct { + clientConfig *platformclientv2.Configuration + routingApi *platformclientv2.RoutingApi + getRoutingUtilizationAttr getRoutingUtilizationFunc + updateRoutingUtilizationAttr updateRoutingUtilizationFunc + deleteRoutingUtilizationAttr deleteRoutingUtilizationFunc + + updateDirectlyAttr updateDirectlyFunc +} + +func newRoutingUtilizationProxy(clientConfig *platformclientv2.Configuration) *routingUtilizationProxy { + api := platformclientv2.NewRoutingApiWithConfig(clientConfig) + return &routingUtilizationProxy{ + clientConfig: clientConfig, + routingApi: api, + getRoutingUtilizationAttr: getRoutingUtilizationFn, + updateRoutingUtilizationAttr: updateRoutingUtilizationFn, + deleteRoutingUtilizationAttr: deleteRoutingUtilizationFn, + + updateDirectlyAttr: updateDirectlyFn, + } +} + +func getRoutingUtilizationProxy(clientConfig *platformclientv2.Configuration) *routingUtilizationProxy { + if internalProxy == nil { + internalProxy = newRoutingUtilizationProxy(clientConfig) + } + return internalProxy +} + +func (p *routingUtilizationProxy) getRoutingUtilization(ctx context.Context) (*platformclientv2.APIResponse, error) { + return p.getRoutingUtilizationAttr(ctx, p) +} +func (p *routingUtilizationProxy) updateRoutingUtilization(ctx context.Context, request *platformclientv2.Utilizationrequest) (*platformclientv2.Utilizationresponse, *platformclientv2.APIResponse, error) { + return p.updateRoutingUtilizationAttr(ctx, p, request) +} +func (p *routingUtilizationProxy) deleteRoutingUtilization(ctx context.Context) (*platformclientv2.APIResponse, error) { + return p.deleteRoutingUtilizationAttr(ctx, p) +} + +func (p *routingUtilizationProxy) updateDirectly(ctx context.Context, d *schema.ResourceData, utilizationRequest []interface{}) (*platformclientv2.APIResponse, error) { + return p.updateDirectlyAttr(ctx, p, d, utilizationRequest) +} + +// Calling the Utilization API directly while the label feature is not available. +// Once it is, this code can go back to using platformclientv2's RoutingApi to make the call. +func getRoutingUtilizationFn(ctx context.Context, p *routingUtilizationProxy) (*platformclientv2.APIResponse, error) { + apiClient := &p.routingApi.Configuration.APIClient + path := fmt.Sprintf("%s/api/v2/routing/utilization", p.routingApi.Configuration.BasePath) + headerParams := buildHeaderParams(p.routingApi) + resp, err := apiClient.CallAPI(path, "GET", nil, headerParams, nil, nil, "", nil) + if err != nil { + return resp, fmt.Errorf("failed to get routing utilization %s ", err) + } + return resp, nil +} + +func updateRoutingUtilizationFn(ctx context.Context, p *routingUtilizationProxy, utilizationRequest *platformclientv2.Utilizationrequest) (*platformclientv2.Utilizationresponse, *platformclientv2.APIResponse, error) { + return p.routingApi.PutRoutingUtilization(*utilizationRequest) +} + +func deleteRoutingUtilizationFn(ctx context.Context, p *routingUtilizationProxy) (*platformclientv2.APIResponse, error) { + return p.routingApi.DeleteRoutingUtilization() +} + +// If the resource has label(s), calls the Utilization API directly. +// This code can go back to using platformclientv2's RoutingApi to make the call once label utilization is available in platformclientv2's RoutingApi +func updateDirectlyFn(ctx context.Context, p *routingUtilizationProxy, d *schema.ResourceData, utilizationRequest []interface{}) (*platformclientv2.APIResponse, error) { + apiClient := &p.routingApi.Configuration.APIClient + + path := fmt.Sprintf("%s/api/v2/routing/utilization", p.routingApi.Configuration.BasePath) + headerParams := buildHeaderParams(p.routingApi) + requestPayload := make(map[string]interface{}) + requestPayload["utilization"] = buildSdkMediaUtilizations(d) + requestPayload["labelUtilizations"] = BuildLabelUtilizationsRequest(utilizationRequest) + + resp, err := apiClient.CallAPI(path, "PUT", requestPayload, headerParams, nil, nil, "", nil) + if err != nil { + return resp, fmt.Errorf("error updating directly %s", err) + } + return resp, nil +} diff --git a/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization.go b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization.go new file mode 100644 index 000000000..27acc28ba --- /dev/null +++ b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization.go @@ -0,0 +1,128 @@ +package routing_utilization + +import ( + "context" + "encoding/json" + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "log" + "terraform-provider-genesyscloud/genesyscloud/provider" + "terraform-provider-genesyscloud/genesyscloud/util" + "terraform-provider-genesyscloud/genesyscloud/util/constants" + + "terraform-provider-genesyscloud/genesyscloud/consistency_checker" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" +) + +func getAllRoutingUtilization(_ context.Context, _ *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { + // Routing utilization config always exists + resources := make(resourceExporter.ResourceIDMetaMap) + resources["0"] = &resourceExporter.ResourceMeta{Name: "routing_utilization"} + return resources, nil +} + +func createRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + log.Printf("Creating Routing Utilization") + d.SetId("routing_utilization") + return updateRoutingUtilization(ctx, d, meta) +} + +func readRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + // Calling the Utilization API directly while the label feature is not available. + // Once it is, this code can go back to using platformclientv2's RoutingApi to make the call. + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationProxy(sdkConfig) + cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingUtilization(), constants.DefaultConsistencyChecks, resourceName) + orgUtilization := &OrgUtilizationWithLabels{} + + log.Printf("Reading Routing Utilization") + + return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { + resp, err := proxy.getRoutingUtilization(ctx) + if err != nil { + if util.IsStatus404(resp) { + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read Routing Utilization: %s", err), resp)) + } + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read Routing Utilization: %s", err), resp)) + } + + err = json.Unmarshal(resp.RawBody, &orgUtilization) + + if orgUtilization.Utilization != nil { + for sdkType, schemaType := range UtilizationMediaTypes { + if mediaSettings, ok := orgUtilization.Utilization[sdkType]; ok { + _ = d.Set(schemaType, FlattenUtilizationSetting(mediaSettings)) + } else { + _ = d.Set(schemaType, nil) + } + } + } + + if orgUtilization.LabelUtilizations != nil { + originalLabelUtilizations := d.Get("label_utilizations").([]interface{}) + // Only add to the state the configured labels, in the configured order, but not any extras, to help terraform with matching new and old state. + flattenedLabelUtilizations := FilterAndFlattenLabelUtilizations(orgUtilization.LabelUtilizations, originalLabelUtilizations) + _ = d.Set("label_utilizations", flattenedLabelUtilizations) + } + + log.Printf("Read Routing Utilization") + return cc.CheckState(d) + }) +} + +func updateRoutingUtilization(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationProxy(sdkConfig) + + labelUtilizations := d.Get("label_utilizations").([]interface{}) + var resp *platformclientv2.APIResponse + var err error + + log.Printf("Updating Routing Utilization") + + // Retrying on 409s because if a label is created immediately before the utilization update, it can lead to a conflict while the utilization is being updated to handle the new label. + diagErr := util.RetryWhen(util.IsStatus409, func() (*platformclientv2.APIResponse, diag.Diagnostics) { + // If the resource has label(s), calls the Utilization API directly. + // This code can go back to using platformclientv2's RoutingApi to make the call once label utilization is available in platformclientv2's RoutingApi. + if labelUtilizations != nil && len(labelUtilizations) > 0 { + resp, err := proxy.updateDirectly(ctx, d, labelUtilizations) + if err != nil { + return resp, util.BuildAPIDiagnosticError(resourceName, "Failed to update routing utilization directly", resp) + } + } else { + _, resp, err = proxy.updateRoutingUtilization(ctx, &platformclientv2.Utilizationrequest{ + Utilization: buildSdkMediaUtilizations(d), + }) + } + + if err != nil { + return resp, util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to update Routing Utilization %s error: %s", d.Id(), err), resp) + } + return resp, nil + }) + if diagErr != nil { + return diagErr + } + + log.Printf("Updated Routing Utilization") + return readRoutingUtilization(ctx, d, meta) +} + +func deleteRoutingUtilization(ctx context.Context, _ *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationProxy(sdkConfig) + + // Resets to default values + log.Printf("Resetting Routing Utilization") + + resp, err := proxy.deleteRoutingUtilization(ctx) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to reset Routing Utilization | error: %s", err), resp) + } + log.Printf("Reset Routing Utilization") + return nil +} diff --git a/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_schema.go b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_schema.go new file mode 100644 index 000000000..0ebba6209 --- /dev/null +++ b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_schema.go @@ -0,0 +1,167 @@ +package routing_utilization + +import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "strings" + "terraform-provider-genesyscloud/genesyscloud/provider" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" + "time" +) + +const resourceName = "genesyscloud_routing_utilization" + +// SetRegistrar registers all the resources and exporters in the package +func SetRegistrar(regInstance registrar.Registrar) { + regInstance.RegisterResource(resourceName, ResourceRoutingUtilization()) + regInstance.RegisterExporter(resourceName, RoutingUtilizationExporter()) +} + +type MediaUtilization struct { + MaximumCapacity int32 `json:"maximumCapacity"` + InterruptableMediaTypes []string `json:"interruptableMediaTypes"` + IncludeNonAcd bool `json:"includeNonAcd"` +} + +type LabelUtilization struct { + MaximumCapacity int32 `json:"maximumCapacity"` + InterruptingLabelIds []string `json:"interruptingLabelIds"` +} + +type OrgUtilizationWithLabels struct { + Utilization map[string]MediaUtilization `json:"utilization"` + LabelUtilizations map[string]LabelUtilization `json:"labelUtilizations"` +} + +var ( + // Map of SDK media type name to schema media type name + UtilizationMediaTypes = map[string]string{ + "call": "call", + "callback": "callback", + "chat": "chat", + "email": "email", + "message": "message", + } + + UtilizationSettingsResource = &schema.Resource{ + Schema: map[string]*schema.Schema{ + "maximum_capacity": { + Description: "Maximum capacity of conversations of this media type. Value must be between 0 and 25.", + Type: schema.TypeInt, + Required: true, + ValidateFunc: validation.IntBetween(0, 25), + }, + "interruptible_media_types": { + Description: fmt.Sprintf("Set of other media types that can interrupt this media type (%s).", strings.Join(getSdkUtilizationTypes(), " | ")), + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + "include_non_acd": { + Description: "Block this media type when on a non-ACD conversation.", + Type: schema.TypeBool, + Optional: true, + Default: false, + }, + }, + } + + UtilizationLabelResource = &schema.Resource{ + Schema: map[string]*schema.Schema{ + "label_id": { + Description: "Id of the label being configured.", + Type: schema.TypeString, + Required: true, + }, + "maximum_capacity": { + Description: "Maximum capacity of conversations with this label. Value must be between 0 and 25.", + Type: schema.TypeInt, + Required: true, + ValidateFunc: validation.IntBetween(0, 25), + }, + "interrupting_label_ids": { + Description: "Set of other labels that can interrupt this label.", + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Schema{Type: schema.TypeString}, + }, + }, + } +) + +func ResourceRoutingUtilization() *schema.Resource { + return &schema.Resource{ + Description: "Genesys Cloud Org-wide Routing Utilization Settings.", + + CreateContext: provider.CreateWithPooledClient(createRoutingUtilization), + ReadContext: provider.ReadWithPooledClient(readRoutingUtilization), + UpdateContext: provider.UpdateWithPooledClient(updateRoutingUtilization), + DeleteContext: provider.DeleteWithPooledClient(deleteRoutingUtilization), + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + SchemaVersion: 1, + Timeouts: &schema.ResourceTimeout{ + Update: schema.DefaultTimeout(8 * time.Minute), + Read: schema.DefaultTimeout(8 * time.Minute), + }, + Schema: map[string]*schema.Schema{ + "call": { + Description: "Call media settings. If not set, this reverts to the default media type settings.", + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Computed: true, + Elem: UtilizationSettingsResource, + }, + "callback": { + Description: "Callback media settings. If not set, this reverts to the default media type settings.", + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Computed: true, + Elem: UtilizationSettingsResource, + }, + "message": { + Description: "Message media settings. If not set, this reverts to the default media type settings.", + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Computed: true, + Elem: UtilizationSettingsResource, + }, + "email": { + Description: "Email media settings. If not set, this reverts to the default media type settings.", + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Computed: true, + Elem: UtilizationSettingsResource, + }, + "chat": { + Description: "Chat media settings. If not set, this reverts to the default media type settings.", + Type: schema.TypeList, + MaxItems: 1, + Optional: true, + Computed: true, + Elem: UtilizationSettingsResource, + }, + "label_utilizations": { + Description: "Label utilization settings. If not set, default label settings will be applied. This is in PREVIEW and should not be used unless the feature is available to your organization.", + Type: schema.TypeList, + Optional: true, + Computed: true, + Elem: UtilizationLabelResource, + }, + }, + } +} + +func RoutingUtilizationExporter() *resourceExporter.ResourceExporter { + return &resourceExporter.ResourceExporter{ + GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingUtilization), + AllowZeroValues: []string{"maximum_capacity"}, + } +} diff --git a/genesyscloud/resource_genesyscloud_routing_utilization_test.go b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_test.go similarity index 77% rename from genesyscloud/resource_genesyscloud_routing_utilization_test.go rename to genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_test.go index 65f90323c..0e5019ce6 100644 --- a/genesyscloud/resource_genesyscloud_routing_utilization_test.go +++ b/genesyscloud/routing_utilization/resource_genesyscloud_routing_utilization_test.go @@ -1,4 +1,4 @@ -package genesyscloud +package routing_utilization import ( "fmt" @@ -6,6 +6,7 @@ import ( "strconv" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" + routingUtilizationLabel "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" "terraform-provider-genesyscloud/genesyscloud/util" "testing" "time" @@ -13,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceBasicRoutingUtilization(t *testing.T) { @@ -27,16 +28,16 @@ func TestAccResourceBasicRoutingUtilization(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + ProviderFactories: provider.GetProviderFactories(providerResources, nil), Steps: []resource.TestStep{ { // Create Config: generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("genesyscloud_routing_utilization.routing-util", "call.0.maximum_capacity", maxCapacity1), @@ -59,11 +60,11 @@ func TestAccResourceBasicRoutingUtilization(t *testing.T) { { // Update with a new max capacities and interruptible media types Config: generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("genesyscloud_routing_utilization.routing-util", "call.0.maximum_capacity", maxCapacity2), @@ -108,30 +109,32 @@ func TestAccResourceRoutingUtilizationWithLabels(t *testing.T) { greenLabelName = "Terraform Green Label" + uuid.NewString() ) - CleanupRoutingUtilizationLabel() + if err := CleanupRoutingUtilizationLabel(); err != nil { + t.Skipf("%v", err) // Skip the test and not fail it + } resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) - if err := checkIfLabelsAreEnabled(); err != nil { + if err := routingUtilizationLabel.CheckIfLabelsAreEnabled(); err != nil { t.Skipf("%v", err) // be sure to skip the test and not fail it } }, - ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + ProviderFactories: provider.GetProviderFactories(providerResources, nil), Steps: []resource.TestStep{ { // Create - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + - GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), - generateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), - generateLabelUtilization(redLabelResource, maxCapacity1), - generateLabelUtilization(blueLabelResource, maxCapacity1, redLabelResource), + GenerateRoutingUtilMediaType("call", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("callback", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("chat", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("email", maxCapacity1, util.FalseValue), + GenerateRoutingUtilMediaType("message", maxCapacity1, util.FalseValue), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity1), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity1, redLabelResource), ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("genesyscloud_routing_utilization.routing-util", "call.0.maximum_capacity", maxCapacity1), @@ -157,17 +160,17 @@ func TestAccResourceRoutingUtilizationWithLabels(t *testing.T) { }, { // Update with a new max capacities and interruptible media types - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + - GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(greenLabelResource, greenLabelName, blueLabelResource) + generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateLabelUtilization(redLabelResource, maxCapacity2), - generateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), + GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity2), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("genesyscloud_routing_utilization.routing-util", "call.0.maximum_capacity", maxCapacity2), @@ -192,27 +195,27 @@ func TestAccResourceRoutingUtilizationWithLabels(t *testing.T) { ), }, { //Delete one by one to avoid conflict - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + - GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(blueLabelResource, blueLabelName, redLabelResource) + generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateLabelUtilization(redLabelResource, maxCapacity2), - generateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), + GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity2), + routingUtilizationLabel.GenerateLabelUtilization(blueLabelResource, maxCapacity2, redLabelResource), ), }, { - Config: GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + + Config: routingUtilizationLabel.GenerateRoutingUtilizationLabelResource(redLabelResource, redLabelName, "") + generateRoutingUtilizationResource( - generateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), - generateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), - generateLabelUtilization(redLabelResource, maxCapacity2), + GenerateRoutingUtilMediaType("call", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeEmail)), + GenerateRoutingUtilMediaType("callback", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("chat", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("email", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + GenerateRoutingUtilMediaType("message", maxCapacity2, util.TrueValue, strconv.Quote(utilTypeCall)), + routingUtilizationLabel.GenerateLabelUtilization(redLabelResource, maxCapacity2), ), }, { @@ -273,37 +276,6 @@ func assertAttributeEquals(state *terraform.InstanceState, attributeName, expect } } -func generateRoutingUtilMediaType( - mediaType string, - maxCapacity string, - includeNonAcd string, - interruptTypes ...string) string { - return fmt.Sprintf(`%s { - maximum_capacity = %s - include_non_acd = %s - interruptible_media_types = [%s] - } - `, mediaType, maxCapacity, includeNonAcd, strings.Join(interruptTypes, ",")) -} - -func generateLabelUtilization( - labelResource string, - maxCapacity string, - interruptingLabelResourceNames ...string) string { - - interruptingLabelResources := make([]string, 0) - for _, resourceName := range interruptingLabelResourceNames { - interruptingLabelResources = append(interruptingLabelResources, "genesyscloud_routing_utilization_label."+resourceName+".id") - } - - return fmt.Sprintf(`label_utilizations { - label_id = genesyscloud_routing_utilization_label.%s.id - maximum_capacity = %s - interrupting_label_ids = [%s] - } - `, labelResource, maxCapacity, strings.Join(interruptingLabelResources, ",")) -} - func generateRoutingUtilizationResource(attributes ...string) string { return fmt.Sprintf(`resource "genesyscloud_routing_utilization" "routing-util" { %s @@ -311,19 +283,24 @@ func generateRoutingUtilizationResource(attributes ...string) string { `, strings.Join(attributes, "\n")) } -func CleanupRoutingUtilizationLabel() { - routingAPI := platformclientv2.NewRoutingApiWithConfig(sdkConfig) +func CleanupRoutingUtilizationLabel() error { + config, err := provider.AuthorizeSdk() + if err != nil { + return err + } + + routingAPI := platformclientv2.NewRoutingApiWithConfig(config) for pageNum := 1; ; pageNum++ { const pageSize = 100 labels, _, getErr := routingAPI.GetRoutingUtilizationLabels(pageSize, pageNum, "", "") if getErr != nil { log.Printf("failed to get page %v of routing email domains: %v", pageNum, getErr) - return + return getErr } if labels.Entities == nil || len(*labels.Entities) == 0 { - return + return nil } for _, label := range *labels.Entities { diff --git a/genesyscloud/routing_utilization/resource_routing_utilization_utils.go b/genesyscloud/routing_utilization/resource_routing_utilization_utils.go new file mode 100644 index 000000000..060d857b8 --- /dev/null +++ b/genesyscloud/routing_utilization/resource_routing_utilization_utils.go @@ -0,0 +1,135 @@ +package routing_utilization + +import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + "sort" + "strings" + "terraform-provider-genesyscloud/genesyscloud/util/lists" +) + +func buildSdkMediaUtilizations(d *schema.ResourceData) *map[string]platformclientv2.Mediautilization { + settings := make(map[string]platformclientv2.Mediautilization) + + for sdkType, schemaType := range UtilizationMediaTypes { + mediaSettings := d.Get(schemaType).([]interface{}) + if mediaSettings != nil && len(mediaSettings) > 0 { + settings[sdkType] = BuildSdkMediaUtilization(mediaSettings) + } + } + + return &settings +} + +func BuildSdkMediaUtilization(settings []interface{}) platformclientv2.Mediautilization { + settingsMap := settings[0].(map[string]interface{}) + + maxCapacity := settingsMap["maximum_capacity"].(int) + includeNonAcd := settingsMap["include_non_acd"].(bool) + + // Optional + interruptableMediaTypes := &[]string{} + if types, ok := settingsMap["interruptible_media_types"]; ok { + interruptableMediaTypes = lists.SetToStringList(types.(*schema.Set)) + } + + return platformclientv2.Mediautilization{ + MaximumCapacity: &maxCapacity, + IncludeNonAcd: &includeNonAcd, + InterruptableMediaTypes: interruptableMediaTypes, + } +} + +func BuildLabelUtilizationsRequest(labelUtilizations []interface{}) map[string]LabelUtilization { + request := make(map[string]LabelUtilization) + for _, labelUtilization := range labelUtilizations { + labelUtilizationMap := labelUtilization.(map[string]interface{}) + interruptingLabelIds := lists.SetToStringList(labelUtilizationMap["interrupting_label_ids"].(*schema.Set)) + + request[labelUtilizationMap["label_id"].(string)] = LabelUtilization{ + MaximumCapacity: int32(labelUtilizationMap["maximum_capacity"].(int)), + InterruptingLabelIds: *interruptingLabelIds, + } + } + return request +} + +func FlattenUtilizationSetting(settings MediaUtilization) []interface{} { + settingsMap := make(map[string]interface{}) + + settingsMap["maximum_capacity"] = settings.MaximumCapacity + settingsMap["include_non_acd"] = settings.IncludeNonAcd + if settings.InterruptableMediaTypes != nil { + settingsMap["interruptible_media_types"] = lists.StringListToSet(settings.InterruptableMediaTypes) + } + + return []interface{}{settingsMap} +} + +func FilterAndFlattenLabelUtilizations(labelUtilizations map[string]LabelUtilization, originalLabelUtilizations []interface{}) []interface{} { + flattenedLabelUtilizations := make([]interface{}, 0) + + for _, originalLabelUtilization := range originalLabelUtilizations { + originalLabelId := (originalLabelUtilization.(map[string]interface{}))["label_id"].(string) + + for currentLabelId, currentLabelUtilization := range labelUtilizations { + if currentLabelId == originalLabelId { + flattenedLabelUtilizations = append(flattenedLabelUtilizations, flattenLabelUtilization(currentLabelId, currentLabelUtilization)) + delete(labelUtilizations, currentLabelId) + break + } + } + } + + return flattenedLabelUtilizations +} + +func flattenLabelUtilization(labelId string, labelUtilization LabelUtilization) map[string]interface{} { + utilizationMap := make(map[string]interface{}) + + utilizationMap["label_id"] = labelId + utilizationMap["maximum_capacity"] = labelUtilization.MaximumCapacity + if labelUtilization.InterruptingLabelIds != nil { + utilizationMap["interrupting_label_ids"] = lists.StringListToSet(labelUtilization.InterruptingLabelIds) + } + + return utilizationMap +} + +func GenerateRoutingUtilMediaType( + mediaType string, + maxCapacity string, + includeNonAcd string, + interruptTypes ...string) string { + return fmt.Sprintf(`%s { + maximum_capacity = %s + include_non_acd = %s + interruptible_media_types = [%s] + } + `, mediaType, maxCapacity, includeNonAcd, strings.Join(interruptTypes, ",")) +} + +func getSdkUtilizationTypes() []string { + types := make([]string, 0, len(UtilizationMediaTypes)) + for t := range UtilizationMediaTypes { + types = append(types, t) + } + sort.Strings(types) + return types +} + +// TODO: remove when routing skill group is refactored +func buildHeaderParams(routingAPI *platformclientv2.RoutingApi) map[string]string { + headerParams := make(map[string]string) + + for key := range routingAPI.Configuration.DefaultHeader { + headerParams[key] = routingAPI.Configuration.DefaultHeader[key] + } + + headerParams["Authorization"] = "Bearer " + routingAPI.Configuration.AccessToken + headerParams["Content-Type"] = "application/json" + headerParams["Accept"] = "application/json" + + return headerParams +} diff --git a/genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label.go b/genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label.go new file mode 100644 index 000000000..f4c1e55a9 --- /dev/null +++ b/genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label.go @@ -0,0 +1,33 @@ +package routing_utilization_label + +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 dataSourceRoutingUtilizationLabelRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { + sdkConfig := m.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationLabelProxy(sdkConfig) + name := d.Get("name").(string) + + return util.WithRetries(ctx, 15*time.Second, func() *retry.RetryError { + label, retryable, resp, getErr := proxy.getRoutingUtilizationLabelByName(ctx, name) + + if getErr != nil && !retryable{ + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Error requesting label %s | error: %s", name, getErr), resp)) + } + + if retryable { + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("No labels found with name %s", name), resp)) + } + d.SetId(*label.Id) + return nil + }) +} diff --git a/genesyscloud/data_source_genesyscloud_routing_utilization_label_test.go b/genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label_test.go similarity index 95% rename from genesyscloud/data_source_genesyscloud_routing_utilization_label_test.go rename to genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label_test.go index 7822c81e5..d30634274 100644 --- a/genesyscloud/data_source_genesyscloud_routing_utilization_label_test.go +++ b/genesyscloud/routing_utilization_label/data_source_genesyscloud_routing_utilization_label_test.go @@ -1,4 +1,4 @@ -package genesyscloud +package routing_utilization_label import ( "fmt" @@ -20,7 +20,7 @@ func TestAccDataSourceRoutingUtilizationLabel(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) - if err := checkIfLabelsAreEnabled(); err != nil { + if err := CheckIfLabelsAreEnabled(); err != nil { t.Skipf("%v", err) // be sure to skip the test and not fail it } }, diff --git a/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_init_test.go b/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_init_test.go new file mode 100644 index 000000000..4de37bfab --- /dev/null +++ b/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_init_test.go @@ -0,0 +1,52 @@ +package routing_utilization_label + +import ( + "sync" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +var providerDataSources map[string]*schema.Resource +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] = ResourceRoutingUtilizationLabel() +} + +// registerTestDataSources registers all data sources used in the tests. +func (r *registerTestInstance) registerTestDataSources() { + r.datasourceMapMutex.Lock() + defer r.datasourceMapMutex.Unlock() + + providerDataSources[resourceName] = DataSourceRoutingUtilizationLabel() +} + +// initTestResources initializes all test resources and data sources. +func initTestResources() { + providerDataSources = make(map[string]*schema.Resource) + providerResources = make(map[string]*schema.Resource) + + regInstance := ®isterTestInstance{} + + regInstance.registerTestDataSources() + regInstance.registerTestResources() +} + +// 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 routing_utilization_label package + initTestResources() + + // Run the test suite for the routing_utilization_label package + m.Run() +} diff --git a/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_proxy.go b/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_proxy.go new file mode 100644 index 000000000..fc19feb6c --- /dev/null +++ b/genesyscloud/routing_utilization_label/genesyscloud_routing_utilization_label_proxy.go @@ -0,0 +1,149 @@ +package routing_utilization_label + +import ( + "context" + "fmt" + "log" + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +var internalProxy *routingUtilizationLabelProxy + +type getAllRoutingUtilizationLabelsFunc func(ctx context.Context, p *routingUtilizationLabelProxy, name string) (*[]platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) +type createRoutingUtilizationLabelFunc func(ctx context.Context, p *routingUtilizationLabelProxy, req *platformclientv2.Createutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) +type getRoutingUtilizationLabelFunc func(ctx context.Context, p *routingUtilizationLabelProxy, id string) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) +type getRoutingUtilizationLabelByNameFunc func(ctx context.Context, p *routingUtilizationLabelProxy, name string) (*platformclientv2.Utilizationlabel, bool, *platformclientv2.APIResponse, error) +type updateRoutingUtilizationLabelFunc func(ctx context.Context, p *routingUtilizationLabelProxy, id string, updateutilizationlabelrequest *platformclientv2.Updateutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) +type deleteRoutingUtilizationLabelFunc func(ctx context.Context, p *routingUtilizationLabelProxy, id string, forceDelete bool) (*platformclientv2.APIResponse, error) + +type routingUtilizationLabelProxy struct { + clientConfig *platformclientv2.Configuration + routingApi *platformclientv2.RoutingApi + getAllRoutingUtilizationLabelsAttr getAllRoutingUtilizationLabelsFunc + createRoutingUtilizationLabelAttr createRoutingUtilizationLabelFunc + getRoutingUtilizationLabelAttr getRoutingUtilizationLabelFunc + getRoutingUtilizationLabelByNameAttr getRoutingUtilizationLabelByNameFunc + updateRoutingUtilizationLabelAttr updateRoutingUtilizationLabelFunc + deleteRoutingUtilizationLabelAttr deleteRoutingUtilizationLabelFunc + routingCache rc.CacheInterface[platformclientv2.Utilizationlabel] +} + +func newRoutingUtilizationLabelProxy(clientConfig *platformclientv2.Configuration) *routingUtilizationLabelProxy { + api := platformclientv2.NewRoutingApiWithConfig(clientConfig) + routingCache := rc.NewResourceCache[platformclientv2.Utilizationlabel]() + return &routingUtilizationLabelProxy{ + clientConfig: clientConfig, + routingApi: api, + getAllRoutingUtilizationLabelsAttr: getAllRoutingUtilizationLabelsFn, + createRoutingUtilizationLabelAttr: createRoutingUtilizationLabelFn, + getRoutingUtilizationLabelAttr: getRoutingUtilizationLabelFn, + getRoutingUtilizationLabelByNameAttr: getRoutingUtilizationLabelByNameFn, + updateRoutingUtilizationLabelAttr: updateRoutingUtilizationLabelFn, + deleteRoutingUtilizationLabelAttr: deleteRoutingUtilizationLabelFn, + routingCache: routingCache, + } +} + +func getRoutingUtilizationLabelProxy(clientConfig *platformclientv2.Configuration) *routingUtilizationLabelProxy { + if internalProxy == nil { + internalProxy = newRoutingUtilizationLabelProxy(clientConfig) + } + return internalProxy +} + +func (p *routingUtilizationLabelProxy) getAllRoutingUtilizationLabels(ctx context.Context, name string) (*[]platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.getAllRoutingUtilizationLabelsAttr(ctx, p, name) +} + +func (p *routingUtilizationLabelProxy) createRoutingUtilizationLabel(ctx context.Context, req *platformclientv2.Createutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.createRoutingUtilizationLabelAttr(ctx, p, req) +} + +func (p *routingUtilizationLabelProxy) getRoutingUtilizationLabel(ctx context.Context, id string) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.getRoutingUtilizationLabelAttr(ctx, p, id) +} + +func (p *routingUtilizationLabelProxy) getRoutingUtilizationLabelByName(ctx context.Context, name string) (*platformclientv2.Utilizationlabel, bool, *platformclientv2.APIResponse, error) { + return p.getRoutingUtilizationLabelByNameAttr(ctx, p, name) +} + +func (p *routingUtilizationLabelProxy) updateRoutingUtilizationLabel(ctx context.Context, id string, req *platformclientv2.Updateutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.updateRoutingUtilizationLabelAttr(ctx, p, id, req) +} + +func (p *routingUtilizationLabelProxy) deleteRoutingUtilizationLabel(ctx context.Context, id string, forceDelete bool) (*platformclientv2.APIResponse, error) { + return p.deleteRoutingUtilizationLabelAttr(ctx, p, id, forceDelete) +} + +func getAllRoutingUtilizationLabelsFn(_ context.Context, p *routingUtilizationLabelProxy, name string) (*[]platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + var allUtilizationLabels []platformclientv2.Utilizationlabel + const pageSize = 100 + + labels, resp, err := p.routingApi.GetRoutingUtilizationLabels(100, 1, "", name) + if err != nil { + return nil, resp, fmt.Errorf("failed to get routing utilization labels | error: %s", err) + } + + if labels.Entities == nil || len(*labels.Entities) == 0 { + return &allUtilizationLabels, resp, nil + } + allUtilizationLabels = append(allUtilizationLabels, *labels.Entities...) + + for pageNum := 2; pageNum <= *labels.PageCount; pageNum++ { + labels, resp, err := p.routingApi.GetRoutingUtilizationLabels(pageSize, pageNum, "", name) + if err != nil { + return nil, resp, fmt.Errorf("failed to get routing utilization labels | error: %s", err) + } + + if labels.Entities == nil || len(*labels.Entities) == 0 { + break + } + allUtilizationLabels = append(allUtilizationLabels, *labels.Entities...) + } + + for _, label := range allUtilizationLabels { + rc.SetCache(p.routingCache, *label.Id, label) + } + + return &allUtilizationLabels, resp, nil +} + +func createRoutingUtilizationLabelFn(_ context.Context, p *routingUtilizationLabelProxy, req *platformclientv2.Createutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.routingApi.PostRoutingUtilizationLabels(*req) +} + +func getRoutingUtilizationLabelFn(_ context.Context, p *routingUtilizationLabelProxy, id string) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + if label := rc.GetCacheItem(p.routingCache, id); label != nil { + return label, nil, nil + } + return p.routingApi.GetRoutingUtilizationLabel(id) +} + +func getRoutingUtilizationLabelByNameFn(ctx context.Context, p *routingUtilizationLabelProxy, name string) (*platformclientv2.Utilizationlabel, bool, *platformclientv2.APIResponse, error) { + labels, resp, err := getAllRoutingUtilizationLabelsFn(ctx, p, name) + if err != nil { + return nil, false, resp, fmt.Errorf("error retrieving routing utilization label by name %s", err) + } + + if labels == nil || len(*labels) == 0{ + return nil, true, resp, fmt.Errorf("no routing utilization labels found with name %s", name) + } + + for _, label := range *labels { + if *label.Name == name { + log.Printf("Retrieved routing utilization label %s by name %s", *label.Id, name) + return &label, false, resp, nil + } + } + return nil, true, resp, fmt.Errorf("no routing utilization label found with name: %s", name) +} + +func updateRoutingUtilizationLabelFn(_ context.Context, p *routingUtilizationLabelProxy, id string, req *platformclientv2.Updateutilizationlabelrequest) (*platformclientv2.Utilizationlabel, *platformclientv2.APIResponse, error) { + return p.routingApi.PutRoutingUtilizationLabel(id, *req) +} + +func deleteRoutingUtilizationLabelFn(_ context.Context, p *routingUtilizationLabelProxy, id string, forceDelete bool) (*platformclientv2.APIResponse, error) { + return p.routingApi.DeleteRoutingUtilizationLabel(id, forceDelete) +} diff --git a/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label.go b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label.go new file mode 100644 index 000000000..c4ca7d422 --- /dev/null +++ b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label.go @@ -0,0 +1,123 @@ +package routing_utilization_label + +import ( + "context" + "fmt" + "log" + "terraform-provider-genesyscloud/genesyscloud/provider" + "terraform-provider-genesyscloud/genesyscloud/util" + "terraform-provider-genesyscloud/genesyscloud/util/constants" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + + "terraform-provider-genesyscloud/genesyscloud/consistency_checker" + + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" +) + +func getAllRoutingUtilizationLabels(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { + resources := make(resourceExporter.ResourceIDMetaMap) + proxy := getRoutingUtilizationLabelProxy(clientConfig) + + labels, resp, getErr := proxy.getAllRoutingUtilizationLabels(ctx, "") + if getErr != nil { + return nil, util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to get page of labels error: %s", getErr), resp) + } + + for _, label := range *labels { + resources[*label.Id] = &resourceExporter.ResourceMeta{Name: *label.Name} + } + return resources, nil +} + +func createRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + name := d.Get("name").(string) + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationLabelProxy(sdkConfig) + + log.Printf("Creating label %s", name) + + label, resp, err := proxy.createRoutingUtilizationLabel(ctx, &platformclientv2.Createutilizationlabelrequest{ + Name: &name, + }) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to create label %s error: %s", name, err), resp) + } + + d.SetId(*label.Id) + + log.Printf("Created label %s %s", name, *label.Id) + return readRoutingUtilizationLabel(ctx, d, meta) +} + +func readRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationLabelProxy(sdkConfig) + cc := consistency_checker.NewConsistencyCheck(ctx, d, meta, ResourceRoutingUtilizationLabel(), constants.DefaultConsistencyChecks, resourceName) + + log.Printf("Reading label %s", d.Id()) + return util.WithRetriesForRead(ctx, d, func() *retry.RetryError { + label, resp, getErr := proxy.getRoutingUtilizationLabel(ctx, d.Id()) + + if getErr != nil { + if util.IsStatus404(resp) { + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read label %s | error: %s", d.Id(), getErr), resp)) + } + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Failed to read label %s | error: %s", d.Id(), getErr), resp)) + } + + _ = d.Set("name", *label.Name) + log.Printf("Read label %s %s", d.Id(), *label.Name) + return cc.CheckState(d) + }) +} + +func updateRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationLabelProxy(sdkConfig) + + id := d.Id() + name := d.Get("name").(string) + + log.Printf("Updating label %s with name %s", id, name) + _, resp, err := proxy.updateRoutingUtilizationLabel(ctx, id, &platformclientv2.Updateutilizationlabelrequest{ + Name: &name, + }) + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to update label %s error: %s", id, err), resp) + } + + log.Printf("Updated label %s", id) + return readRoutingUtilizationLabel(ctx, d, meta) +} + +func deleteRoutingUtilizationLabel(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + name := d.Get("name").(string) + sdkConfig := meta.(*provider.ProviderMeta).ClientConfig + proxy := getRoutingUtilizationLabelProxy(sdkConfig) + + log.Printf("Deleting label %s %s", d.Id(), name) + resp, err := proxy.deleteRoutingUtilizationLabel(ctx, d.Id(), true) + + if err != nil { + return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to delete label %s error: %s", name, err), resp) + } + + return util.WithRetries(ctx, 30*time.Second, func() *retry.RetryError { + _, resp, err := proxy.getRoutingUtilizationLabel(ctx, d.Id()) + + if err != nil { + if util.IsStatus404(resp) { + log.Printf("Deleted Routing label %s", d.Id()) + return nil + } + return retry.NonRetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Error deleting Routing label %s: %s", d.Id(), err), resp)) + } + return retry.RetryableError(util.BuildWithRetriesApiDiagnosticError(resourceName, fmt.Sprintf("Routing label %s still exists", d.Id()), resp)) + }) +} diff --git a/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_schema.go b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_schema.go new file mode 100644 index 000000000..92761f50a --- /dev/null +++ b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_schema.go @@ -0,0 +1,61 @@ +package routing_utilization_label + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "terraform-provider-genesyscloud/genesyscloud/provider" + resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" + registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" +) + +const resourceName = "genesyscloud_routing_utilization_label" + +// SetRegistrar registers all the resources and exporters in the package +func SetRegistrar(regInstance registrar.Registrar) { + regInstance.RegisterResource(resourceName, ResourceRoutingUtilizationLabel()) + regInstance.RegisterDataSource(resourceName, DataSourceRoutingUtilizationLabel()) + regInstance.RegisterExporter(resourceName, RoutingUtilizationLabelExporter()) +} + +func ResourceRoutingUtilizationLabel() *schema.Resource { + return &schema.Resource{ + Description: "Genesys Cloud Routing Utilization Label. This resource is not yet widely available. Only use it if the feature is enabled.", + + CreateContext: provider.CreateWithPooledClient(createRoutingUtilizationLabel), + ReadContext: provider.ReadWithPooledClient(readRoutingUtilizationLabel), + UpdateContext: provider.UpdateWithPooledClient(updateRoutingUtilizationLabel), + DeleteContext: provider.DeleteWithPooledClient(deleteRoutingUtilizationLabel), + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + SchemaVersion: 1, + Schema: map[string]*schema.Schema{ + "name": { + Description: "Label name.", + Type: schema.TypeString, + Required: true, + }, + }, + } +} + +func DataSourceRoutingUtilizationLabel() *schema.Resource { + return &schema.Resource{ + Description: "Data source for Genesys Cloud Routing Utilization Labels. Select a label by name.", + ReadContext: provider.ReadWithPooledClient(dataSourceRoutingUtilizationLabelRead), + Schema: map[string]*schema.Schema{ + "name": { + Description: "Label name.", + Type: schema.TypeString, + ValidateFunc: validation.StringDoesNotContainAny("*"), + Required: true, + }, + }, + } +} + +func RoutingUtilizationLabelExporter() *resourceExporter.ResourceExporter { + return &resourceExporter.ResourceExporter{ + GetResourcesFunc: provider.GetAllWithPooledClient(getAllRoutingUtilizationLabels), + } +} diff --git a/genesyscloud/resource_genesyscloud_routing_utilization_label_test.go b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_test.go similarity index 69% rename from genesyscloud/resource_genesyscloud_routing_utilization_label_test.go rename to genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_test.go index f73fbfa58..793fb3f3f 100644 --- a/genesyscloud/resource_genesyscloud_routing_utilization_label_test.go +++ b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_test.go @@ -1,4 +1,4 @@ -package genesyscloud +package routing_utilization_label import ( "fmt" @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceRoutingUtilizationLabelBasic(t *testing.T) { @@ -22,7 +22,7 @@ func TestAccResourceRoutingUtilizationLabelBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) - if err := checkIfLabelsAreEnabled(); err != nil { + if err := CheckIfLabelsAreEnabled(); err != nil { t.Skipf("%v", err) // be sure to skip the test and not fail it } }, @@ -61,20 +61,6 @@ func TestAccResourceRoutingUtilizationLabelBasic(t *testing.T) { }) } -func GenerateRoutingUtilizationLabelResource(resourceID string, name string, dependsOnResource string) string { - dependsOn := "" - - if dependsOnResource != "" { - dependsOn = fmt.Sprintf("depends_on=[genesyscloud_routing_utilization_label.%s]", dependsOnResource) - } - - return fmt.Sprintf(`resource "genesyscloud_routing_utilization_label" "%s" { - name = "%s" - %s - } - `, resourceID, name, dependsOn) -} - func validateTestLabelDestroyed(state *terraform.State) error { routingApi := platformclientv2.NewRoutingApi() @@ -98,12 +84,3 @@ func validateTestLabelDestroyed(state *terraform.State) error { return fmt.Errorf("No label resource found") } - -func checkIfLabelsAreEnabled() error { // remove once the feature is globally enabled - api := platformclientv2.NewRoutingApiWithConfig(sdkConfig) // the variable sdkConfig exists at a package level in ./genesyscloud and is already authorized - _, resp, _ := api.GetRoutingUtilizationLabels(100, 1, "", "") - if resp.StatusCode == 501 { - return fmt.Errorf("feature is not yet implemented in this org.") - } - return nil -} diff --git a/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_utils.go b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_utils.go new file mode 100644 index 000000000..22322c59d --- /dev/null +++ b/genesyscloud/routing_utilization_label/resource_genesyscloud_routing_utilization_label_utils.go @@ -0,0 +1,54 @@ +package routing_utilization_label + +import ( + "fmt" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" + "strings" + "terraform-provider-genesyscloud/genesyscloud/provider" +) + +func GenerateRoutingUtilizationLabelResource(resourceID string, name string, dependsOnResource string) string { + dependsOn := "" + + if dependsOnResource != "" { + dependsOn = fmt.Sprintf("depends_on=[genesyscloud_routing_utilization_label.%s]", dependsOnResource) + } + + return fmt.Sprintf(`resource "genesyscloud_routing_utilization_label" "%s" { + name = "%s" + %s + } + `, resourceID, name, dependsOn) +} + +func CheckIfLabelsAreEnabled() error { // remove once the feature is globally enabled + sdkConfig, err := provider.AuthorizeSdk() + if err != nil { + return err + } + + api := platformclientv2.NewRoutingApiWithConfig(sdkConfig) + _, resp, _ := api.GetRoutingUtilizationLabels(100, 1, "", "") + if resp.StatusCode == 501 { + return fmt.Errorf("feature is not yet implemented in this org.") + } + return nil +} + +func GenerateLabelUtilization( + labelResource string, + maxCapacity string, + interruptingLabelResourceNames ...string) string { + + interruptingLabelResources := make([]string, 0) + for _, resourceName := range interruptingLabelResourceNames { + interruptingLabelResources = append(interruptingLabelResources, "genesyscloud_routing_utilization_label."+resourceName+".id") + } + + return fmt.Sprintf(`label_utilizations { + label_id = genesyscloud_routing_utilization_label.%s.id + maximum_capacity = %s + interrupting_label_ids = [%s] + } + `, labelResource, maxCapacity, strings.Join(interruptingLabelResources, ",")) +} diff --git a/genesyscloud/scripts/genesyscloud_scripts_proxy.go b/genesyscloud/scripts/genesyscloud_scripts_proxy.go index f69d0ea13..7f5a53860 100644 --- a/genesyscloud/scripts/genesyscloud_scripts_proxy.go +++ b/genesyscloud/scripts/genesyscloud_scripts_proxy.go @@ -14,7 +14,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/files" "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/scripts/resource_genesyscloud_script.go b/genesyscloud/scripts/resource_genesyscloud_script.go index e2f63d14a..53df15885 100644 --- a/genesyscloud/scripts/resource_genesyscloud_script.go +++ b/genesyscloud/scripts/resource_genesyscloud_script.go @@ -12,7 +12,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/constants" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" diff --git a/genesyscloud/scripts/resource_genesyscloud_script_test.go b/genesyscloud/scripts/resource_genesyscloud_script_test.go index 1c7d9d7cf..23d3a7471 100644 --- a/genesyscloud/scripts/resource_genesyscloud_script_test.go +++ b/genesyscloud/scripts/resource_genesyscloud_script_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/scripts/resource_scripts_schema.go b/genesyscloud/scripts/resource_scripts_schema.go index 459850ed1..d3381654e 100644 --- a/genesyscloud/scripts/resource_scripts_schema.go +++ b/genesyscloud/scripts/resource_scripts_schema.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) /* @@ -59,7 +59,7 @@ func ResourceScript() *schema.Resource { Description: "Path to the script file to upload.", Type: schema.TypeString, Required: true, - ValidateFunc: gcloud.ValidatePath, + ValidateFunc: validators.ValidatePath, }, "file_content_hash": { Description: "Hash value of the script file content. Used to detect changes.", diff --git a/genesyscloud/station/genesyscloud_station_init_test.go b/genesyscloud/station/genesyscloud_station_init_test.go index 3db79e890..9641ffcb3 100644 --- a/genesyscloud/station/genesyscloud_station_init_test.go +++ b/genesyscloud/station/genesyscloud_station_init_test.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" "testing" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" gcloud "terraform-provider-genesyscloud/genesyscloud" edgePhone "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_phone" diff --git a/genesyscloud/station/genesyscloud_station_proxy.go b/genesyscloud/station/genesyscloud_station_proxy.go index 7c53e5b68..7486790e1 100644 --- a/genesyscloud/station/genesyscloud_station_proxy.go +++ b/genesyscloud/station/genesyscloud_station_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // internalProxy holds a proxy instance that can be used throughout the package diff --git a/genesyscloud/task_management_workbin/genesyscloud_task_management_workbin_proxy.go b/genesyscloud/task_management_workbin/genesyscloud_task_management_workbin_proxy.go index 29ec9c976..acbe12980 100644 --- a/genesyscloud/task_management_workbin/genesyscloud_task_management_workbin_proxy.go +++ b/genesyscloud/task_management_workbin/genesyscloud_task_management_workbin_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin.go b/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin.go index fe2f8a596..5b4c8a5f5 100644 --- a/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin.go +++ b/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin_test.go b/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin_test.go index 42c8ab351..b468918ea 100644 --- a/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin_test.go +++ b/genesyscloud/task_management_workbin/resource_genesyscloud_task_management_workbin_test.go @@ -12,7 +12,7 @@ import ( gcloud "terraform-provider-genesyscloud/genesyscloud" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem/genesyscloud_task_management_workitem_proxy.go b/genesyscloud/task_management_workitem/genesyscloud_task_management_workitem_proxy.go index fa433e4bf..82aa8f0c4 100644 --- a/genesyscloud/task_management_workitem/genesyscloud_task_management_workitem_proxy.go +++ b/genesyscloud/task_management_workitem/genesyscloud_task_management_workitem_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem.go b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem.go index bbff9db3f..9f5494392 100644 --- a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem.go +++ b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_schema.go b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_schema.go index d639b207f..6e1c27978 100644 --- a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_schema.go +++ b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_schema.go @@ -7,7 +7,7 @@ import ( resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" "terraform-provider-genesyscloud/genesyscloud/util" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) /* @@ -91,14 +91,14 @@ func ResourceTaskManagementWorkitem() *schema.Resource { Optional: true, Computed: true, Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidateLocalDateTimes, + ValidateDiagFunc: validators.ValidateLocalDateTimes, }, `date_expires`: { Description: `The expiry date of the Workitem. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss[.mmm]Z`, Optional: true, Computed: true, Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidateLocalDateTimes, + ValidateDiagFunc: validators.ValidateLocalDateTimes, }, `duration_seconds`: { Description: `The estimated duration in seconds to complete the workitem.`, diff --git a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_test.go b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_test.go index 5b74074ae..c9d31132c 100644 --- a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_test.go +++ b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_test.go @@ -23,7 +23,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_unit_test.go b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_unit_test.go index 15c62f936..591301bbb 100644 --- a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_unit_test.go +++ b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_unit_test.go @@ -16,7 +16,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_utils.go b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_utils.go index 9c60e471d..6d3ab7ebf 100644 --- a/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_utils.go +++ b/genesyscloud/task_management_workitem/resource_genesyscloud_task_management_workitem_utils.go @@ -9,7 +9,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem_schema/genesyscloud_task_management_workitem_schema_proxy.go b/genesyscloud/task_management_workitem_schema/genesyscloud_task_management_workitem_schema_proxy.go index 429ce6e42..a93f33c34 100644 --- a/genesyscloud/task_management_workitem_schema/genesyscloud_task_management_workitem_schema_proxy.go +++ b/genesyscloud/task_management_workitem_schema/genesyscloud_task_management_workitem_schema_proxy.go @@ -8,7 +8,7 @@ import ( "log" "net/http" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema.go b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema.go index 15fe49c6c..f96eba1df 100644 --- a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema.go +++ b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_test.go b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_test.go index ae8816ddc..f043ef040 100644 --- a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_test.go +++ b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_test.go @@ -15,7 +15,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_unit_test.go b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_unit_test.go index e61aaa110..d9914e3b1 100644 --- a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_unit_test.go +++ b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_unit_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_utils.go b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_utils.go index 8ff481cfe..7594a8ccf 100644 --- a/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_utils.go +++ b/genesyscloud/task_management_workitem_schema/resource_genesyscloud_task_management_workitem_schema_utils.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( diff --git a/genesyscloud/task_management_worktype/data_source_genesyscloud_task_management_unit_test.go b/genesyscloud/task_management_worktype/data_source_genesyscloud_task_management_unit_test.go index 40114afbc..6cfd137aa 100644 --- a/genesyscloud/task_management_worktype/data_source_genesyscloud_task_management_unit_test.go +++ b/genesyscloud/task_management_worktype/data_source_genesyscloud_task_management_unit_test.go @@ -4,7 +4,7 @@ import ( "context" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "terraform-provider-genesyscloud/genesyscloud/provider" "testing" diff --git a/genesyscloud/task_management_worktype/genesyscloud_task_management_worktype_proxy.go b/genesyscloud/task_management_worktype/genesyscloud_task_management_worktype_proxy.go index 94775d19a..5f5417369 100644 --- a/genesyscloud/task_management_worktype/genesyscloud_task_management_worktype_proxy.go +++ b/genesyscloud/task_management_worktype/genesyscloud_task_management_worktype_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype.go b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype.go index 4797b1148..df9a05aa0 100644 --- a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype.go +++ b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" diff --git a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_schema.go b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_schema.go index c1b190920..35ea54fce 100644 --- a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_schema.go +++ b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_schema.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) @@ -77,7 +77,7 @@ func ResourceTaskManagementWorktype() *schema.Resource { Optional: true, Computed: true, Type: schema.TypeString, - ValidateDiagFunc: gcloud.ValidateTime, + ValidateDiagFunc: validators.ValidateTime, }, }, } diff --git a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_test.go b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_test.go index 6354c352b..f796b484d 100644 --- a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_test.go +++ b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_test.go @@ -18,7 +18,7 @@ import ( workitemSchema "terraform-provider-genesyscloud/genesyscloud/task_management_workitem_schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_unit_test.go b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_unit_test.go index fd10b5a50..aefbe1a22 100644 --- a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_unit_test.go +++ b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_unit_test.go @@ -12,7 +12,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_utils.go b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_utils.go index 3dff7cf51..79284a9b9 100644 --- a/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_utils.go +++ b/genesyscloud/task_management_worktype/resource_genesyscloud_task_management_worktype_utils.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -82,7 +82,7 @@ func getWorktypeupdateFromResourceData(d *schema.ResourceData, statuses *[]platf worktype := platformclientv2.Worktypeupdate{} worktype.SetField("Name", platformclientv2.String(d.Get("name").(string))) - if d.HasChange("Description") { + if d.HasChange("description") { worktype.SetField("Description", platformclientv2.String(d.Get("description").(string))) } if d.HasChange("default_workbin_id") { diff --git a/genesyscloud/team/genesyscloud_team_proxy.go b/genesyscloud/team/genesyscloud_team_proxy.go index b22b302eb..2880ca8c0 100644 --- a/genesyscloud/team/genesyscloud_team_proxy.go +++ b/genesyscloud/team/genesyscloud_team_proxy.go @@ -6,7 +6,7 @@ import ( "log" "terraform-provider-genesyscloud/genesyscloud/util" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/team/resource_genesyscloud_team.go b/genesyscloud/team/resource_genesyscloud_team.go index f6c10156b..2c6d8414e 100644 --- a/genesyscloud/team/resource_genesyscloud_team.go +++ b/genesyscloud/team/resource_genesyscloud_team.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" diff --git a/genesyscloud/team/resource_genesyscloud_team_test.go b/genesyscloud/team/resource_genesyscloud_team_test.go index 978b50b0f..03bede55f 100644 --- a/genesyscloud/team/resource_genesyscloud_team_test.go +++ b/genesyscloud/team/resource_genesyscloud_team_test.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "math/rand" "strings" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/team/resource_genesyscloud_team_unit_test.go b/genesyscloud/team/resource_genesyscloud_team_unit_test.go index 85b77b13d..3b3e670cb 100644 --- a/genesyscloud/team/resource_genesyscloud_team_unit_test.go +++ b/genesyscloud/team/resource_genesyscloud_team_unit_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" ) diff --git a/genesyscloud/team/resource_genesyscloud_team_utils.go b/genesyscloud/team/resource_genesyscloud_team_utils.go index 8feb15f32..8c926b239 100644 --- a/genesyscloud/team/resource_genesyscloud_team_utils.go +++ b/genesyscloud/team/resource_genesyscloud_team_utils.go @@ -6,7 +6,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "strings" "terraform-provider-genesyscloud/genesyscloud/util" "terraform-provider-genesyscloud/genesyscloud/util/chunks" diff --git a/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings.go b/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings.go index 8e7d312bd..e81844e03 100644 --- a/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings.go +++ b/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings.go @@ -22,7 +22,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( @@ -402,8 +402,10 @@ func ValidateInboundSiteSettings(inboundSiteString string, trunkBaseMetaId strin func TrunkBaseSettingsExporter() *resourceExporter.ResourceExporter { return &resourceExporter.ResourceExporter{ - GetResourcesFunc: provider.GetAllWithPooledClient(getAllTrunkBaseSettings), - RefAttrs: map[string]*resourceExporter.RefAttrSettings{}, + GetResourcesFunc: provider.GetAllWithPooledClient(getAllTrunkBaseSettings), + RefAttrs: map[string]*resourceExporter.RefAttrSettings{ + //"inbound_site_id": {RefType: "genesyscloud_telephony_providers_edges_site"}, TODO: decide how/if this will be included after DEVTOOLING-676 is resolved + }, JsonEncodeAttributes: []string{"properties"}, } } diff --git a/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings_test.go b/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings_test.go index 200b798c3..d0a1ecab1 100644 --- a/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings_test.go +++ b/genesyscloud/telephony/resource_genesyscloud_telephony_providers_edges_trunkbasesettings_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceTrunkBaseSettings(t *testing.T) { diff --git a/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_proxy.go b/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_proxy.go index 9e43bbe64..553f33454 100644 --- a/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_proxy.go +++ b/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_schema.go b/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_schema.go index 7646d8028..10ff98a5e 100644 --- a/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_schema.go +++ b/genesyscloud/telephony_providers_edges_did/genesyscloud_telephony_providers_edges_did_schema.go @@ -4,7 +4,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "terraform-provider-genesyscloud/genesyscloud/provider" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const resourceName = "genesyscloud_telephony_providers_edges_did" @@ -24,7 +24,7 @@ func DataSourceDid() *schema.Resource { Description: "Phone number for the DID.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, }, } diff --git a/genesyscloud/telephony_providers_edges_did_pool/genesyscloud_telephony_providers_edges_did_pool_proxy.go b/genesyscloud/telephony_providers_edges_did_pool/genesyscloud_telephony_providers_edges_did_pool_proxy.go index e34798b05..65d2cdb54 100644 --- a/genesyscloud/telephony_providers_edges_did_pool/genesyscloud_telephony_providers_edges_did_pool_proxy.go +++ b/genesyscloud/telephony_providers_edges_did_pool/genesyscloud_telephony_providers_edges_did_pool_proxy.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool.go b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool.go index 5e97624a4..a0a870405 100644 --- a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool.go +++ b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) // getAllDidPools retrieves all DID pools and is used for the exporter diff --git a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_schema.go b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_schema.go index 097a32310..1f88fdc4b 100644 --- a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_schema.go +++ b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_schema.go @@ -6,7 +6,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const resourceName = "genesyscloud_telephony_providers_edges_did_pool" @@ -44,13 +44,13 @@ func ResourceTelephonyDidPool() *schema.Resource { Description: "Starting phone number of the DID Pool range. Phone number must be in a E.164 number format. Changing the start_phone_number attribute will cause the did_pool object to be dropped and recreated with a new ID.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, "end_phone_number": { Description: "Ending phone number of the DID Pool range. Phone number must be in an E.164 number format. Changing the end_phone_number attribute will cause the did_pool object to be dropped and recreated with a new ID.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, "description": { Description: "DID Pool description.", @@ -83,13 +83,13 @@ func DataSourceDidPool() *schema.Resource { Description: "Starting phone number of the DID Pool range. Must be in an E.164 number format.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, "end_phone_number": { Description: "Ending phone number of the DID Pool range.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, }, } diff --git a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_test.go b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_test.go index 25e5b05c6..184070128 100644 --- a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_test.go +++ b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_test.go @@ -10,7 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceDidPoolBasic(t *testing.T) { diff --git a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_utils.go b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_utils.go index ecc8d1f93..2f7ffa5c9 100644 --- a/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_utils.go +++ b/genesyscloud/telephony_providers_edges_did_pool/resource_genesyscloud_telephony_providers_edges_did_pool_utils.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type DidPoolStruct struct { diff --git a/genesyscloud/telephony_providers_edges_edge_group/genesyscloud_telephony_providers_edges_edge_group_proxy.go b/genesyscloud/telephony_providers_edges_edge_group/genesyscloud_telephony_providers_edges_edge_group_proxy.go index 9da50ec91..6db0ceb02 100644 --- a/genesyscloud/telephony_providers_edges_edge_group/genesyscloud_telephony_providers_edges_edge_group_proxy.go +++ b/genesyscloud/telephony_providers_edges_edge_group/genesyscloud_telephony_providers_edges_edge_group_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *edgeGroupProxy diff --git a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group.go b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group.go index fd3498481..45882bed4 100644 --- a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group.go +++ b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func createEdgeGroup(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { diff --git a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_test.go b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_test.go index 02733951a..6c0968e95 100644 --- a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_test.go +++ b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceEdgeGroup(t *testing.T) { diff --git a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_utils.go b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_utils.go index e6f109eeb..6089618c0 100644 --- a/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_utils.go +++ b/genesyscloud/telephony_providers_edges_edge_group/resource_genesyscloud_telephony_providers_edges_edge_group_utils.go @@ -6,7 +6,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildSdkTrunkBases(d *schema.ResourceData) *[]platformclientv2.Trunkbase { diff --git a/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_proxy.go b/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_proxy.go index ebbe202d2..21de47b35 100644 --- a/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_proxy.go +++ b/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_proxy.go @@ -3,7 +3,7 @@ package telephony_providers_edges_extension_pool import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *extensionPoolProxy diff --git a/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_schema.go b/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_schema.go index 0b8eb37df..929e78bed 100644 --- a/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_schema.go +++ b/genesyscloud/telephony_providers_edges_extension_pool/genesyscloud_telephony_providers_edges_extension_pool_schema.go @@ -5,7 +5,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) const ( @@ -29,14 +29,14 @@ func ResourceTelephonyExtensionPool() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateDiagFunc: gcloud.ValidateExtensionPool, + ValidateDiagFunc: validators.ValidateExtensionPool, }, "end_number": { Description: "Ending phone number of the Extension Pool range. Changing the end_number attribute will cause the extension object to be dropped and recreated with a new ID.", Type: schema.TypeString, Required: true, ForceNew: true, - ValidateDiagFunc: gcloud.ValidateExtensionPool, + ValidateDiagFunc: validators.ValidateExtensionPool, }, "description": { Description: "Extension Pool description.", @@ -56,13 +56,13 @@ func DataSourceExtensionPool() *schema.Resource { Description: "Starting number of the Extension Pool range.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateExtensionPool, + ValidateDiagFunc: validators.ValidateExtensionPool, }, "end_number": { Description: "Ending number of the Extension Pool range.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateExtensionPool, + ValidateDiagFunc: validators.ValidateExtensionPool, }, }, } @@ -76,7 +76,7 @@ func TelephonyExtensionPoolExporter() *resourceExporter.ResourceExporter { } func SetRegistrar(l registrar.Registrar) { - l.RegisterDataSource("genesyscloud_telephony_providers_edges_extension_pool", DataSourceExtensionPool()) - l.RegisterResource("genesyscloud_telephony_providers_edges_extension_pool", ResourceTelephonyExtensionPool()) - l.RegisterExporter("genesyscloud_telephony_providers_edges_extension_pool", TelephonyExtensionPoolExporter()) + l.RegisterDataSource(resourceName, DataSourceExtensionPool()) + l.RegisterResource(resourceName, ResourceTelephonyExtensionPool()) + l.RegisterExporter(resourceName, TelephonyExtensionPoolExporter()) } diff --git a/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool.go b/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool.go index b87e18f1a..4cbe729b1 100644 --- a/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool.go +++ b/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllExtensionPools(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool_test.go b/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool_test.go index 0d1d75364..84a0d93a0 100644 --- a/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool_test.go +++ b/genesyscloud/telephony_providers_edges_extension_pool/resource_genesyscloud_telephony_providers_edges_extension_pool_test.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type extensionPoolStruct struct { diff --git a/genesyscloud/telephony_providers_edges_linebasesettings/data_source_genesyscloud_telephony_providers_edges_linebasesettings.go b/genesyscloud/telephony_providers_edges_linebasesettings/data_source_genesyscloud_telephony_providers_edges_linebasesettings.go index f4926b3e0..912f7a8b7 100644 --- a/genesyscloud/telephony_providers_edges_linebasesettings/data_source_genesyscloud_telephony_providers_edges_linebasesettings.go +++ b/genesyscloud/telephony_providers_edges_linebasesettings/data_source_genesyscloud_telephony_providers_edges_linebasesettings.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceLineBaseSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_init_test.go b/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_init_test.go index 3f58aa899..ddfe3a1b9 100644 --- a/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_init_test.go +++ b/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_init_test.go @@ -10,7 +10,7 @@ import ( edgeSite "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_site" "testing" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) diff --git a/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_proxy.go b/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_proxy.go index 5fa8a8271..648447fb6 100644 --- a/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_proxy.go +++ b/genesyscloud/telephony_providers_edges_phone/genesyscloud_telephony_providers_edges_phone_proxy.go @@ -6,7 +6,9 @@ import ( "log" "net/http" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" + + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* @@ -53,6 +55,7 @@ type phoneProxy struct { edgesApi *platformclientv2.TelephonyProvidersEdgeApi stationsApi *platformclientv2.StationsApi usersApi *platformclientv2.UsersApi + phoneCache rc.CacheInterface[platformclientv2.Phone] getAllPhonesAttr getAllPhonesFunc createPhoneAttr createPhoneFunc @@ -73,12 +76,14 @@ func newPhoneProxy(clientConfig *platformclientv2.Configuration) *phoneProxy { edgesApi := platformclientv2.NewTelephonyProvidersEdgeApiWithConfig(clientConfig) stationsApi := platformclientv2.NewStationsApiWithConfig(clientConfig) usersApi := platformclientv2.NewUsersApiWithConfig(clientConfig) + phoneCache := rc.NewResourceCache[platformclientv2.Phone]() return &phoneProxy{ clientConfig: clientConfig, edgesApi: edgesApi, stationsApi: stationsApi, usersApi: usersApi, + phoneCache: phoneCache, getAllPhonesAttr: getAllPhonesFn, createPhoneAttr: createPhoneFn, @@ -116,6 +121,9 @@ func (p *phoneProxy) createPhone(ctx context.Context, phoneConfig *platformclien // getPhoneById retrieves a Genesys Cloud Phone by id func (p *phoneProxy) getPhoneById(ctx context.Context, phoneId string) (*platformclientv2.Phone, *platformclientv2.APIResponse, error) { + if phone := rc.GetCacheItem(p.phoneCache, phoneId); phone != nil { + return phone, nil, nil + } return p.getPhoneByIdAttr(ctx, p, phoneId) } @@ -205,6 +213,9 @@ func getAllPhonesFn(ctx context.Context, p *phoneProxy) (*[]platformclientv2.Pho log.Printf("getAllPhonesFn:: Listing all of the non-deleted phone ids and names that we actually retrieved") for _, phone := range allPhones { log.Printf("getAllPhonesFn:: Retrieved phone id %s with phone name: %s\n", *phone.Id, *phone.Name) + + // Cache the phone resource into the p.phoneCache for later use + rc.SetCache(p.phoneCache, *phone.Id, phone) } return &allPhones, response, nil diff --git a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone.go b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone.go index f35777cd5..64cee7cfa 100644 --- a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone.go +++ b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllPhones(ctx context.Context, sdkConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { @@ -90,10 +90,16 @@ func readPhone(ctx context.Context, d *schema.ResourceData, meta interface{}) di } _ = d.Set("name", *currentPhone.Name) - _ = d.Set("state", *currentPhone.State) _ = d.Set("site_id", *currentPhone.Site.Id) _ = d.Set("phone_base_settings_id", *currentPhone.PhoneBaseSettings.Id) - _ = d.Set("line_base_settings_id", *currentPhone.LineBaseSettings.Id) + + if currentPhone.State != nil { + _ = d.Set("state", *currentPhone.State) + } + + if currentPhone.LineBaseSettings != nil { + _ = d.Set("line_base_settings_id", *currentPhone.LineBaseSettings.Id) + } if currentPhone.PhoneMetaBase != nil { _ = d.Set("phone_meta_base_id", *currentPhone.PhoneMetaBase.Id) diff --git a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_schema.go b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_schema.go index 2e1315b58..489a269b7 100644 --- a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_schema.go +++ b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_schema.go @@ -5,7 +5,7 @@ import ( resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" "terraform-provider-genesyscloud/genesyscloud/util" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" @@ -140,7 +140,7 @@ func ResourcePhone() *schema.Resource { Type: schema.TypeList, Optional: true, Computed: true, - Elem: &schema.Schema{Type: schema.TypeString, ValidateDiagFunc: gcloud.ValidatePhoneNumber}, + Elem: &schema.Schema{Type: schema.TypeString, ValidateDiagFunc: validators.ValidatePhoneNumber}, }, "properties": { Description: "phone properties", diff --git a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_test.go b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_test.go index eca79cff8..c01d7e3ed 100644 --- a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_test.go +++ b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_test.go @@ -17,7 +17,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourcePhoneBasic(t *testing.T) { @@ -188,6 +188,7 @@ func TestAccResourcePhoneBasic(t *testing.T) { func TestAccResourcePhoneStandalone(t *testing.T) { number := "+12005538112" + deleteDidPoolWithNumber(number) didPoolResource1 := "test-didpool1" lineAddresses := []string{number} phoneRes := "phone_standalone1234" @@ -245,29 +246,6 @@ func TestAccResourcePhoneStandalone(t *testing.T) { "mac", []string{}, ) - config := didPool.GenerateDidPoolResource(&didPool.DidPoolStruct{ - ResourceID: didPoolResource1, - StartPhoneNumber: lineAddresses[0], - EndPhoneNumber: lineAddresses[0], - Description: util.NullValue, // No description - Comments: util.NullValue, // No comments - PoolProvider: util.NullValue, // No provider - }) - config += phoneBaseSettings.GeneratePhoneBaseSettingsResourceWithCustomAttrs( - phoneBaseSettingsRes, - phoneBaseSettingsName, - "phoneBaseSettings description", - "generic_sip.json", - ) + GeneratePhoneResourceWithCustomAttrs(&PhoneConfig{ - phoneRes, - name1, - stateActive, - "genesyscloud_telephony_providers_edges_site." + siteRes + ".id", - "genesyscloud_telephony_providers_edges_phonebasesettings." + phoneBaseSettingsRes + ".id", - lineAddresses, - "", // no web rtc user - "genesyscloud_telephony_providers_edges_did_pool." + didPoolResource1, - }, capabilities, generatePhoneProperties(uuid.NewString())) resource.Test(t, resource.TestCase{ PreCheck: func() { util.TestAccPreCheck(t) }, @@ -277,7 +255,28 @@ func TestAccResourcePhoneStandalone(t *testing.T) { PreConfig: func() { time.Sleep(30 * time.Second) }, - Config: locationConfig + siteConfig + config, + Config: didPool.GenerateDidPoolResource(&didPool.DidPoolStruct{ + ResourceID: didPoolResource1, + StartPhoneNumber: lineAddresses[0], + EndPhoneNumber: lineAddresses[0], + Description: util.NullValue, // No description + Comments: util.NullValue, // No comments + PoolProvider: util.NullValue, // No provider + }) + locationConfig + siteConfig + phoneBaseSettings.GeneratePhoneBaseSettingsResourceWithCustomAttrs( + phoneBaseSettingsRes, + phoneBaseSettingsName, + "phoneBaseSettings description", + "generic_sip.json", + ) + GeneratePhoneResourceWithCustomAttrs(&PhoneConfig{ + phoneRes, + name1, + stateActive, + "genesyscloud_telephony_providers_edges_site." + siteRes + ".id", + "genesyscloud_telephony_providers_edges_phonebasesettings." + phoneBaseSettingsRes + ".id", + lineAddresses, + "", // no web rtc user + "genesyscloud_telephony_providers_edges_did_pool." + didPoolResource1, + }, capabilities, generatePhoneProperties(uuid.NewString())), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("genesyscloud_telephony_providers_edges_phone."+phoneRes, "name", name1), resource.TestCheckResourceAttr("genesyscloud_telephony_providers_edges_phone."+phoneRes, "state", stateActive), @@ -445,7 +444,6 @@ func TestAccResourceHardPhoneStandalone(t *testing.T) { CheckDestroy: TestVerifyWebRtcPhoneDestroyed, }) } - func generatePhoneCapabilities( provisions, registers, @@ -532,3 +530,32 @@ func deleteDidPool(config *platformclientv2.Configuration, id string) error { } return nil } + +func deleteDidPoolWithNumber(number string) { + edgesAPI := platformclientv2.NewTelephonyProvidersEdgeApiWithConfig(sdkConfig) + var didPoolsToDelete []string + + for pageNum := 1; ; pageNum++ { + const pageSize = 100 + didPools, _, getErr := edgesAPI.GetTelephonyProvidersEdgesDidpools(pageSize, pageNum, "", nil) + if getErr != nil { + return + } + + if didPools.Entities == nil || len(*didPools.Entities) == 0 { + break + } + + for _, didPool := range *didPools.Entities { + if (didPool.StartPhoneNumber != nil && *didPool.StartPhoneNumber == number) || + (didPool.EndPhoneNumber != nil && *didPool.EndPhoneNumber == number) { + didPoolsToDelete = append(didPoolsToDelete, *didPool.Id) + } + } + } + + for _, didPoolId := range didPoolsToDelete { + edgesAPI.DeleteTelephonyProvidersEdgesDidpool(didPoolId) + time.Sleep(5 * time.Second) + } +} diff --git a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_utils.go b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_utils.go index 791aed325..7545851fe 100644 --- a/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_utils.go +++ b/genesyscloud/telephony_providers_edges_phone/resource_genesyscloud_telephony_providers_edges_phone_utils.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type PhoneConfig struct { @@ -174,6 +174,9 @@ func flattenPhoneLines(lines *[]platformclientv2.Line) []string { for i := 0; i < len(*lines); i++ { line := (*lines)[i] did := "" + if line.Properties == nil { + continue + } if k := (*line.Properties)["station_identity_address"]; k != nil { didI := k.(map[string]interface{})["value"].(map[string]interface{})["instance"] if didI != nil { diff --git a/genesyscloud/telephony_providers_edges_phonebasesettings/data_source_genesyscloud_telephony_providers_edges_phonebasesettings.go b/genesyscloud/telephony_providers_edges_phonebasesettings/data_source_genesyscloud_telephony_providers_edges_phonebasesettings.go index e0f6d3235..ddbafa09b 100644 --- a/genesyscloud/telephony_providers_edges_phonebasesettings/data_source_genesyscloud_telephony_providers_edges_phonebasesettings.go +++ b/genesyscloud/telephony_providers_edges_phonebasesettings/data_source_genesyscloud_telephony_providers_edges_phonebasesettings.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourcePhoneBaseSettingsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/genesyscloud/telephony_providers_edges_phonebasesettings/genesyscloud_telephony_providers_edges_phonebasesettings_proxy.go b/genesyscloud/telephony_providers_edges_phonebasesettings/genesyscloud_telephony_providers_edges_phonebasesettings_proxy.go index 047852220..47093078c 100644 --- a/genesyscloud/telephony_providers_edges_phonebasesettings/genesyscloud_telephony_providers_edges_phonebasesettings_proxy.go +++ b/genesyscloud/telephony_providers_edges_phonebasesettings/genesyscloud_telephony_providers_edges_phonebasesettings_proxy.go @@ -3,7 +3,7 @@ package telephony_providers_edges_phonebasesettings import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *phoneBaseProxy diff --git a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings.go b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings.go index 99fb59df0..3ac3ed4dd 100644 --- a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings.go +++ b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func createPhoneBaseSettings(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { diff --git a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_test.go b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_test.go index 1fc69d1ac..864dc06f4 100644 --- a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_test.go +++ b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourcePhoneBaseSettings(t *testing.T) { diff --git a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_utils.go b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_utils.go index c2ad0afb9..9cd0bc6be 100644 --- a/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_utils.go +++ b/genesyscloud/telephony_providers_edges_phonebasesettings/resource_genesyscloud_telephony_providers_edges_phonebasesettings_utils.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func generatePhoneBaseSettingsDataSource( diff --git a/genesyscloud/telephony_providers_edges_site/data_source_genesyscloud_telephony_providers_edges_site_test.go b/genesyscloud/telephony_providers_edges_site/data_source_genesyscloud_telephony_providers_edges_site_test.go index fd5744d2d..1ca6a3319 100644 --- a/genesyscloud/telephony_providers_edges_site/data_source_genesyscloud_telephony_providers_edges_site_test.go +++ b/genesyscloud/telephony_providers_edges_site/data_source_genesyscloud_telephony_providers_edges_site_test.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util" "testing" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" gcloud "terraform-provider-genesyscloud/genesyscloud" diff --git a/genesyscloud/telephony_providers_edges_site/genesyscloud_telephony_providers_edges_site_proxy.go b/genesyscloud/telephony_providers_edges_site/genesyscloud_telephony_providers_edges_site_proxy.go index a6f87a171..bd7b487ee 100644 --- a/genesyscloud/telephony_providers_edges_site/genesyscloud_telephony_providers_edges_site_proxy.go +++ b/genesyscloud/telephony_providers_edges_site/genesyscloud_telephony_providers_edges_site_proxy.go @@ -5,7 +5,7 @@ import ( "fmt" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* diff --git a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site.go b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site.go index dffc909f0..5297248fe 100644 --- a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site.go +++ b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllSites(ctx context.Context, sdkConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { @@ -306,14 +306,23 @@ func deleteSite(ctx context.Context, d *schema.ResourceData, meta interface{}) d sdkConfig := meta.(*provider.ProviderMeta).ClientConfig sp := GetSiteProxy(sdkConfig) - log.Printf("Deleting site") - resp, err := sp.deleteSite(ctx, d.Id()) - if err != nil { - if util.IsStatus404(resp) { - log.Printf("Site already deleted %s", d.Id()) - return nil + // A site linked to a trunk will not be able to be deleted until that trunk is deleted. Retrying here to make sure it is cleared properly. + log.Printf("Deleting site %s", d.Id()) + diagErr := util.RetryWhen(util.IsStatus409, func() (*platformclientv2.APIResponse, diag.Diagnostics) { + log.Printf("Deleting site %s", d.Id()) + resp, err := sp.deleteSite(ctx, d.Id()) + if err != nil { + if util.IsStatus404(resp) { + log.Printf("Site already deleted %s", d.Id()) + return resp, nil + } + return resp, util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to delete site %s error: %s", d.Id(), err), resp) } - return util.BuildAPIDiagnosticError(resourceName, fmt.Sprintf("Failed to delete site %s error: %s", d.Id(), err), resp) + return resp, nil + }) + + if diagErr != nil { + return diagErr } return util.WithRetries(ctx, 30*time.Second, func() *retry.RetryError { diff --git a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_schema.go b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_schema.go index 5a952fc84..db12e288d 100644 --- a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_schema.go +++ b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_schema.go @@ -4,11 +4,11 @@ import ( "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" ) /* @@ -90,7 +90,7 @@ func ResourceSite() *schema.Resource { Description: "A reoccurring rule for updating the Edges assigned to the site. The only supported frequencies are daily and weekly. Weekly frequencies require a day list with at least oneday specified. All other configurations are not supported.", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateRrule, + ValidateDiagFunc: validators.ValidateRrule, }, "start": { Description: "Date time is represented as an ISO-8601 string without a timezone. For example: yyyy-MM-ddTHH:mm:ss.SSS", @@ -221,7 +221,7 @@ func ResourceSite() *schema.Resource { Description: "The caller ID value for the site. The callerID must be a valid E.164 formatted phone number", Type: schema.TypeString, Optional: true, - ValidateDiagFunc: gcloud.ValidatePhoneNumber, + ValidateDiagFunc: validators.ValidatePhoneNumber, }, "caller_name": { Description: "The caller name for the site", diff --git a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_test.go b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_test.go index aa1a90ca5..d601105cc 100644 --- a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_test.go +++ b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_test.go @@ -18,7 +18,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceSite(t *testing.T) { diff --git a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_utils.go b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_utils.go index 6c90c19a2..4cfd92d46 100644 --- a/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_utils.go +++ b/genesyscloud/telephony_providers_edges_site/resource_genesyscloud_telephony_providers_edges_site_utils.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/leekchan/timeutil" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var ( diff --git a/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_init_test.go b/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_init_test.go index e8ace3917..dfa9e4042 100644 --- a/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_init_test.go +++ b/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_init_test.go @@ -2,7 +2,7 @@ package telephony_providers_edges_site_outbound_route import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "sync" gcloud "terraform-provider-genesyscloud/genesyscloud" diff --git a/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_proxy.go b/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_proxy.go index a45e1c589..d9ff5d76c 100644 --- a/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_proxy.go +++ b/genesyscloud/telephony_providers_edges_site_outbound_route/genesyscloud_telephony_providers_edges_site_outbound_route_proxy.go @@ -2,7 +2,7 @@ package telephony_providers_edges_site_outbound_route import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" rc "terraform-provider-genesyscloud/genesyscloud/resource_cache" telephonyProvidersEdgesSite "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_site" ) diff --git a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route.go b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route.go index 91d094ef3..bcbab805e 100644 --- a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route.go +++ b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route.go @@ -6,7 +6,7 @@ import ( "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" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "log" "terraform-provider-genesyscloud/genesyscloud/consistency_checker" "terraform-provider-genesyscloud/genesyscloud/provider" diff --git a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_schema.go b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_schema.go index 0e424c08c..a16fefc0b 100644 --- a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_schema.go +++ b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_schema.go @@ -1,11 +1,12 @@ package telephony_providers_edges_site_outbound_route import ( - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" ) /* @@ -93,7 +94,6 @@ func ResourceSiteOutboundRoute() *schema.Resource { Required: true, ConfigMode: schema.SchemaConfigModeAttr, Elem: outboundRouteSchema, - MinItems: 1, }, }, } diff --git a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_utils.go b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_utils.go index ff069de53..ababd9fe0 100644 --- a/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_utils.go +++ b/genesyscloud/telephony_providers_edges_site_outbound_route/resource_genesyscloud_telephony_providers_edges_site_outbound_route_utils.go @@ -2,7 +2,7 @@ package telephony_providers_edges_site_outbound_route import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" ) diff --git a/genesyscloud/telephony_providers_edges_trunk/data_source_genesyscloud_telephony_providers_edges_trunk.go b/genesyscloud/telephony_providers_edges_trunk/data_source_genesyscloud_telephony_providers_edges_trunk.go index c6d9bbfc9..de61a6741 100644 --- a/genesyscloud/telephony_providers_edges_trunk/data_source_genesyscloud_telephony_providers_edges_trunk.go +++ b/genesyscloud/telephony_providers_edges_trunk/data_source_genesyscloud_telephony_providers_edges_trunk.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func dataSourceTrunkRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/genesyscloud/telephony_providers_edges_trunk/genesyscloud_telephony_providers_edges_trunk_proxy.go b/genesyscloud/telephony_providers_edges_trunk/genesyscloud_telephony_providers_edges_trunk_proxy.go index 1cefe3a53..4f2138191 100644 --- a/genesyscloud/telephony_providers_edges_trunk/genesyscloud_telephony_providers_edges_trunk_proxy.go +++ b/genesyscloud/telephony_providers_edges_trunk/genesyscloud_telephony_providers_edges_trunk_proxy.go @@ -3,7 +3,7 @@ package telephony_providers_edges_trunk import ( "context" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) //generate a proxy for telephony_providers_edges_trunk diff --git a/genesyscloud/telephony_providers_edges_trunk/resource_genesyscloud_telephony_providers_edges_trunk.go b/genesyscloud/telephony_providers_edges_trunk/resource_genesyscloud_telephony_providers_edges_trunk.go index c303bc43f..af15ea366 100644 --- a/genesyscloud/telephony_providers_edges_trunk/resource_genesyscloud_telephony_providers_edges_trunk.go +++ b/genesyscloud/telephony_providers_edges_trunk/resource_genesyscloud_telephony_providers_edges_trunk.go @@ -17,7 +17,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func createTrunk(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { diff --git a/genesyscloud/tfexporter/export_common.go b/genesyscloud/tfexporter/export_common.go index 91fffdc7e..3743ab1a5 100644 --- a/genesyscloud/tfexporter/export_common.go +++ b/genesyscloud/tfexporter/export_common.go @@ -129,13 +129,22 @@ func IncludeFilterResourceByRegex(result resourceExporter.ResourceIDMetaMap, nam return result } + sanitizer := resourceExporter.NewSanitizerProvider() + for _, pattern := range newFilters { for k := range result { match, _ := regexp.MatchString(pattern, result[k].Name) + // If name matches original name if match { newResourceMap[k] = result[k] } + + // If name matches sanitized name + sanitizedMatch, _ := regexp.MatchString(pattern, sanitizer.S.SanitizeResourceName(result[k].Name)) + if sanitizedMatch { + newResourceMap[k] = result[k] + } } } @@ -157,10 +166,12 @@ func ExcludeFilterResourceByRegex(result resourceExporter.ResourceIDMetaMap, nam } newResourceMap := make(resourceExporter.ResourceIDMetaMap) + sanitizer := resourceExporter.NewSanitizerProvider() for k := range result { for _, pattern := range newFilters { + // If name matches original name match, _ := regexp.MatchString(pattern, result[k].Name) if !match { newResourceMap[k] = result[k] @@ -168,8 +179,16 @@ func ExcludeFilterResourceByRegex(result resourceExporter.ResourceIDMetaMap, nam delete(newResourceMap, k) break } - } + // If name matches sanitized name + sanitizedMatch, _ := regexp.MatchString(pattern, sanitizer.S.SanitizeResourceName(result[k].Name)) + if !sanitizedMatch { + newResourceMap[k] = result[k] + } else { + delete(newResourceMap, k) + break + } + } } return newResourceMap } diff --git a/genesyscloud/tfexporter/genesyscloud_resource_exporter.go b/genesyscloud/tfexporter/genesyscloud_resource_exporter.go index 35e878b48..abf75169a 100644 --- a/genesyscloud/tfexporter/genesyscloud_resource_exporter.go +++ b/genesyscloud/tfexporter/genesyscloud_resource_exporter.go @@ -1,10 +1,14 @@ package tfexporter import ( + "archive/zip" "context" "fmt" "hash/fnv" + "io" "log" + "os" + "path" "path/filepath" "reflect" "regexp" @@ -29,11 +33,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/mohae/deepcopy" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) /* - This file contains all of the logic associated wite the process of exporting a file. + This file contains all logic associated with the process of exporting a file. */ // Used to store the TF config block as a string so that it can be ignored when testing the exported HCL config file. @@ -178,7 +182,7 @@ func (g *GenesysCloudResourceExporter) Export() (diagErr diag.Diagnostics) { if diagErr != nil { return diagErr } - // Step #2 Retrieve all of the individual resources we are going to export + // Step #2 Retrieve all the individual resources we are going to export diagErr = g.retrieveSanitizedResourceMaps() if diagErr != nil { return diagErr @@ -327,6 +331,7 @@ func (g *GenesysCloudResourceExporter) retrieveGenesysCloudObjectInstances() dia go func(resType string, exporter *resourceExporter.ResourceExporter) { defer wg.Done() + log.Printf("Getting exported resources for [%s]", resType) typeResources, err := g.getResourcesForType(resType, g.provider, exporter, g.meta) if err != nil { @@ -479,6 +484,57 @@ func (g *GenesysCloudResourceExporter) generateOutputFiles() diag.Diagnostics { } } + err = g.generateZipForExporter() + if err != nil { + return err + } + + return nil +} + +func (g *GenesysCloudResourceExporter) generateZipForExporter() diag.Diagnostics { + zipFileName := "../archive_genesyscloud_tf_export" + uuid.NewString() + ".zip" + if compress := g.d.Get("compress").(bool); compress { //if true, compress directory name of where the export is going to occur + // read all the files + var files []fileMeta + ferr := filepath.Walk(g.exportDirPath, func(path string, info os.FileInfo, ferr error) error { + files = append(files, fileMeta{Path: path, IsDir: info.IsDir()}) + return nil + }) + if ferr != nil { + return diag.Errorf("Failed to fetch file path %s", ferr) + } + // create a zip + archive, ferr := os.Create(zipFileName) + if ferr != nil { + return diag.Errorf("Failed to create zip %s", ferr) + } + defer archive.Close() + zipWriter := zip.NewWriter(archive) + + for _, f := range files { + if !f.IsDir { + fPath := f.Path + + w, ferr := zipWriter.Create(path.Base(fPath)) + if ferr != nil { + return diag.Errorf("Failed to create base path for zip %s", ferr) + } + + file, ferr := os.Open(f.Path) + if ferr != nil { + return diag.Errorf("Failed to open the original file %s", ferr) + } + defer file.Close() + + if _, ferr = io.Copy(w, file); ferr != nil { + return diag.Errorf("Failed to copy the file to zip %s", ferr) + } + } + } + zipWriter.Close() + } + return nil } @@ -834,7 +890,7 @@ func (g *GenesysCloudResourceExporter) buildSanitizedResourceMaps(exporters map[ } if containsPermissionsErrorOnly(err) && logErrors { log.Printf("%v", err[0].Summary) - log.Print("log_permission_errors = true. Resuming export...") + log.Printf("Logging permission error for %s. Resuming export...", name) return } if err != nil { @@ -854,6 +910,7 @@ func (g *GenesysCloudResourceExporter) buildSanitizedResourceMaps(exporters map[ go func() { wg.Wait() + log.Print(`Finished building sanitized resource maps`) close(wgDone) }() @@ -1138,7 +1195,7 @@ func (g *GenesysCloudResourceExporter) sanitizeConfigMap( resourceName string, configMap map[string]interface{}, prevAttr string, - exporters map[string]*resourceExporter.ResourceExporter, //Map of all of the exporters + exporters map[string]*resourceExporter.ResourceExporter, //Map of all exporters exportingState bool, exportingAsHCL bool, parentKey bool) ([]unresolvableAttributeInfo, bool) { @@ -1258,7 +1315,7 @@ func (g *GenesysCloudResourceExporter) sanitizeConfigMap( // This can cause invalid config files due to including attributes with limits that don't allow for zero values, so we remove // those attributes from the config by default. Attributes can opt-out of this behavior by being added to a ResourceExporter's // AllowZeroValues list. - if !exporter.AllowForZeroValues(currAttr) { + if !exporter.AllowForZeroValues(currAttr) && !exporter.AllowForZeroValuesInMap(prevAttr) { removeZeroValues(key, configMap[key], configMap) } diff --git a/genesyscloud/tfexporter/genesyscloud_resource_exporter_test.go b/genesyscloud/tfexporter/genesyscloud_resource_exporter_test.go index e1b4a0619..1f85ff1ff 100644 --- a/genesyscloud/tfexporter/genesyscloud_resource_exporter_test.go +++ b/genesyscloud/tfexporter/genesyscloud_resource_exporter_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "reflect" "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" diff --git a/genesyscloud/tfexporter/resource_genesyscloud_tf_export.go b/genesyscloud/tfexporter/resource_genesyscloud_tf_export.go index ff21b8582..44b727ab7 100644 --- a/genesyscloud/tfexporter/resource_genesyscloud_tf_export.go +++ b/genesyscloud/tfexporter/resource_genesyscloud_tf_export.go @@ -5,17 +5,23 @@ import ( "fmt" "os" "path/filepath" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" + "terraform-provider-genesyscloud/genesyscloud/tfexporter_state" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "terraform-provider-genesyscloud/genesyscloud/tfexporter_state" ) +type fileMeta struct { + Path string + IsDir bool +} + func SetRegistrar(l registrar.Registrar) { l.RegisterResource("genesyscloud_tf_export", ResourceTfExport()) @@ -48,7 +54,7 @@ func ResourceTfExport() *schema.Resource { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: gcloud.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), + ValidateFunc: validators.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), }, ForceNew: true, Deprecated: "Use include_filter_resources attribute instead", @@ -60,7 +66,7 @@ func ResourceTfExport() *schema.Resource { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: gcloud.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), + ValidateFunc: validators.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), }, ForceNew: true, ConflictsWith: []string{"resource_types", "exclude_filter_resources"}, @@ -80,7 +86,7 @@ func ResourceTfExport() *schema.Resource { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: gcloud.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), + ValidateFunc: validators.ValidateSubStringInSlice(resourceExporter.GetAvailableExporterTypes()), }, ForceNew: true, ConflictsWith: []string{"resource_types", "include_filter_resources"}, @@ -134,6 +140,13 @@ func ResourceTfExport() *schema.Resource { Default: true, ForceNew: true, }, + "compress": { + Description: "Compress exported results using zip format", + Type: schema.TypeBool, + Optional: true, + Default: false, + ForceNew: true, + }, }, } } diff --git a/genesyscloud/tfexporter/resource_genesyscloud_tf_export_test.go b/genesyscloud/tfexporter/resource_genesyscloud_tf_export_test.go index d225adea1..4b91ebe6d 100644 --- a/genesyscloud/tfexporter/resource_genesyscloud_tf_export_test.go +++ b/genesyscloud/tfexporter/resource_genesyscloud_tf_export_test.go @@ -1,6 +1,8 @@ package tfexporter import ( + "archive/zip" + "bytes" "encoding/json" "fmt" "io" @@ -23,7 +25,7 @@ import ( "testing" "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/testrunner" @@ -124,6 +126,62 @@ func TestAccResourceTfExportIncludeFilterResourcesByRegEx(t *testing.T) { }) } +// TestAccResourceTfExportIncludeFilterResourcesByRegExAndSanitizedNames will create 3 queues (two with foo bar, one to be excluded). +// The test ensures that resources can be exported directly by their actual name or their sanitized names. +func TestAccResourceTfExportIncludeFilterResourcesByRegExAndSanitizedNames(t *testing.T) { + var ( + exportTestDir = "../.terraformregex" + uuid.NewString() + exportResource = "test-export3_1" + + queueResources = []QueueExport{ + {ResourceName: "test-queue-test-1", Name: "include filter test - exclude me", Description: "This is an excluded bar test resource", AcwTimeoutMs: 200000}, + {ResourceName: "test-queue-test-2", Name: "include filter test - foo - bar me", Description: "This is a foo bar test resource", AcwTimeoutMs: 200000}, + {ResourceName: "test-queue-test-3", Name: "include filter test - fu - barre you", Description: "This is a foo bar test resource", AcwTimeoutMs: 200000}, + } + ) + defer os.RemoveAll(exportTestDir) + + queueResourceDef := buildQueueResources(queueResources) + + config := queueResourceDef + + generateTfExportByIncludeFilterResources( + exportResource, + exportTestDir, + util.TrueValue, + []string{ + strconv.Quote("genesyscloud_routing_queue::include filter test - foo - bar me"), // Unsanitized Named Resource + strconv.Quote("genesyscloud_routing_queue::include_filter_test_-_fu_-_barre_you"), // Sanitized Named Resource + }, + util.FalseValue, + util.FalseValue, + []string{ + strconv.Quote("genesyscloud_routing_queue." + queueResources[0].ResourceName), + strconv.Quote("genesyscloud_routing_queue." + queueResources[1].ResourceName), + strconv.Quote("genesyscloud_routing_queue." + queueResources[2].ResourceName), + }, + ) + + sanitizer := resourceExporter.NewSanitizerProvider() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { util.TestAccPreCheck(t) }, + ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + Steps: []resource.TestStep{ + { + // Generate a queue as well and export it + Config: config, + // Wait for a specified duration to avoid runtime error + Check: resource.ComposeTestCheckFunc( + testQueueExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_queue", sanitizer.S.SanitizeResourceName(queueResources[1].Name), queueResources[1]), + testQueueExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_queue", sanitizer.S.SanitizeResourceName(queueResources[2].Name), queueResources[2]), + testQueueExportExcludesRegEx(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_queue", ".*exclude me.*"), //We should not find any "test" queues here because we only wanted to include queues that ended with a -prod + ), + }, + }, + CheckDestroy: testVerifyExportsDestroyedFunc(exportTestDir), + }) +} + // TestAccResourceTfExportIncludeFilterResourcesByRegExExclusiveToResource // will create two queues (one with a -prod suffix and one with a -test suffix) // and two wrap up codes (one with a -prod suffix and one with a -test suffix) @@ -260,6 +318,78 @@ func TestAccResourceTfExportExcludeFilterResourcesByRegExExclusiveToResource(t * }) } +// TestAccResourceTfExportExcludeFilterResourcesByRegExExclusiveToResourceAndSanitizedNames will exclude any test resources that match a +// regular expression provided for the resource. In this test we check against both sanitized and unsanitized names. +func TestAccResourceTfExportExcludeFilterResourcesByRegExExclusiveToResourceAndSanitizedNames(t *testing.T) { + var ( + exportTestDir = "../.terraformExclude" + uuid.NewString() + exportResource = "test-export6_1" + + queueResources = []QueueExport{ + {ResourceName: "test-queue-test-1", Name: "exclude filter - exclude me", Description: "This is an excluded bar test resource", AcwTimeoutMs: 200000}, + {ResourceName: "test-queue-test-2", Name: "exclude filter - foo - bar me", Description: "This is a foo bar test resource", AcwTimeoutMs: 200000}, + {ResourceName: "test-queue-test-3", Name: "exclude filter - fu - barre you", Description: "This is a foo bar test resource", AcwTimeoutMs: 200000}, + } + + wrapupCodeResources = []WrapupcodeExport{ + {ResourceName: "test-wrapupcode-prod", Name: "exclude me"}, + {ResourceName: "test-wrapupcode-test", Name: "foo + bar me"}, + {ResourceName: "test-wrapupcode-dev", Name: "fu - barre you"}, + } + ) + defer os.RemoveAll(exportTestDir) + + queueResourceDef := buildQueueResources(queueResources) + wrapupcodeResourceDef := buildWrapupcodeResources(wrapupCodeResources) + config := queueResourceDef + wrapupcodeResourceDef + + generateTfExportByExcludeFilterResources( + exportResource, + exportTestDir, + util.TrueValue, + []string{ + strconv.Quote("genesyscloud_routing_queue::exclude filter - foo - bar me"), + strconv.Quote("genesyscloud_routing_queue::exclude_filter_-_fu_-_barre_you"), + strconv.Quote("genesyscloud_outbound_ruleset"), + strconv.Quote("genesyscloud_user"), + strconv.Quote("genesyscloud_user_roles"), + strconv.Quote("genesyscloud_flow"), + }, + util.FalseValue, + util.FalseValue, + []string{ + strconv.Quote("genesyscloud_routing_queue." + queueResources[0].ResourceName), + strconv.Quote("genesyscloud_routing_queue." + queueResources[1].ResourceName), + strconv.Quote("genesyscloud_routing_queue." + queueResources[2].ResourceName), + strconv.Quote("genesyscloud_routing_wrapupcode." + wrapupCodeResources[0].ResourceName), + strconv.Quote("genesyscloud_routing_wrapupcode." + wrapupCodeResources[1].ResourceName), + strconv.Quote("genesyscloud_routing_wrapupcode." + wrapupCodeResources[2].ResourceName), + }, + ) + + sanitizer := resourceExporter.NewSanitizerProvider() + resource.Test(t, resource.TestCase{ + PreCheck: func() { util.TestAccPreCheck(t) }, + ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + Steps: []resource.TestStep{ + { + PreConfig: func() { + time.Sleep(30 * time.Second) + }, + // Generate a queue as well and export it + Config: config, + Check: resource.ComposeTestCheckFunc( + testQueueExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_queue", sanitizer.S.SanitizeResourceName(queueResources[0].Name), queueResources[0]), + testWrapupcodeExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_wrapupcode", sanitizer.S.SanitizeResourceName(wrapupCodeResources[0].Name), wrapupCodeResources[0]), + testWrapupcodeExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_wrapupcode", sanitizer.S.SanitizeResourceName(wrapupCodeResources[1].Name), wrapupCodeResources[1]), + testWrapupcodeExportEqual(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_wrapupcode", sanitizer.S.SanitizeResourceName(wrapupCodeResources[2].Name), wrapupCodeResources[2]), + testQueueExportExcludesRegEx(exportTestDir+"/"+defaultTfJSONFile, "genesyscloud_routing_queue", "(foo|fu)"), + ), + }, + }, + CheckDestroy: testVerifyExportsDestroyedFunc(exportTestDir), + }) +} + // TestAccResourceTfExportSplitFilesAsJSON will create 2 queues, 2 wrap up codes, and 2 users. // The exporter will be run in split mode so 3 resource tf.jsons should be created as well as a provider.tf.json func TestAccResourceTfExportSplitFilesAsJSON(t *testing.T) { @@ -334,6 +464,39 @@ func TestAccResourceTfExportSplitFilesAsJSON(t *testing.T) { }) } +// TestAccResourceTfExportForCompress does a basic test check to make sure the compressed file is created. +func TestAccResourceTfExportForCompress(t *testing.T) { + var ( + exportTestDir = "../../.terraform" + uuid.NewString() + exportResource1 = "test-export1" + zipFileName = "../archive_genesyscloud_tf_export*" + ) + + defer os.RemoveAll(exportTestDir) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { util.TestAccPreCheck(t) }, + ProviderFactories: provider.GetProviderFactories(providerResources, providerDataSources), + Steps: []resource.TestStep{ + { + // Run export without state file + Config: generateTfExportResourceForCompress( + exportResource1, + exportTestDir, + util.TrueValue, + util.TrueValue, + "", + ), + Check: resource.ComposeTestCheckFunc( + validateCompressedCreated(zipFileName), + validateCompressedFile(zipFileName), + ), + }, + }, + CheckDestroy: deleteTestCompressedZip(exportTestDir, zipFileName), + }) +} + // TestAccResourceTfExport does a basic test check to make sure the export file is created. func TestAccResourceTfExport(t *testing.T) { var ( @@ -1367,7 +1530,7 @@ resource "genesyscloud_outbound_campaign" "%s" { resource "genesyscloud_script" "script" { script_name = "%s" filepath = "%s" - file_content_hash = filesha256("%s") + file_content_hash = filesha256("%s") } data "genesyscloud_auth_division_home" "home" {} @@ -2129,8 +2292,8 @@ func generateTfExportResource( "genesyscloud_architect_datatable", "genesyscloud_architect_datatable_row", //"genesyscloud_flow", - "genesyscloud_flow_milestone", - //"genesyscloud_flow_outcome", + "genesyscloud_flow_milestone", + //"genesyscloud_flow_outcome", "genesyscloud_architect_ivr", "genesyscloud_architect_schedules", "genesyscloud_architect_schedulegroups", @@ -2179,6 +2342,25 @@ func generateTfExportResource( `, resourceID, directory, includeState, excludedAttributes) } +// generateTfExportResourceForCompress creates a resource to test compressed exported results +func generateTfExportResourceForCompress( + resourceID string, + directory string, + includeState string, + compressFlag string, + excludedAttributes string) string { + return fmt.Sprintf(`resource "genesyscloud_tf_export" "%s" { + directory = "%s" + include_state_file = %s + compress=%s + resource_types = [ + "genesyscloud_architect_datatable", + ] + exclude_attributes = [%s] + } + `, resourceID, directory, includeState, compressFlag, excludedAttributes) +} + func generateTfExportResourceMin( resourceID string, directory string, @@ -2303,6 +2485,40 @@ func validateFileCreated(filename string) resource.TestCheckFunc { } } +func validateCompressedCreated(filename string) resource.TestCheckFunc { + return func(state *terraform.State) error { + _, err := filepath.Glob(filename) + if err != nil { + return fmt.Errorf("Failed to find file") + } + return nil + } +} + +func deleteTestCompressedZip(exportPath string, zipFileName string) resource.TestCheckFunc { + return func(state *terraform.State) error { + dir, err := os.ReadDir(exportPath) + if err != nil { + return fmt.Errorf("Failed to read compressed zip %s", exportPath) + } + for _, d := range dir { + os.RemoveAll(filepath.Join(exportPath, d.Name())) + } + files, err := filepath.Glob(zipFileName) + + if err != nil { + return fmt.Errorf("Failed to get zip: %s", err) + } + for _, f := range files { + if err := os.Remove(f); err != nil { + return fmt.Errorf("Failed to delete: %s", err) + } + } + + return nil + } +} + func testVerifyExportsDestroyedFunc(exportTestDir string) resource.TestCheckFunc { return func(state *terraform.State) error { // Check config file deleted @@ -2337,6 +2553,56 @@ func validateEvaluationFormAttributes(resourceName string, form gcloud.Evaluatio ) } +// validateCompressedFile unzips and validates the exported resulted in the compressed folder +func validateCompressedFile(path string) resource.TestCheckFunc { + return func(state *terraform.State) error { + files, err := filepath.Glob(path) + if err != nil { + return err + } + for _, f := range files { + reader, err := zip.OpenReader(f) + if err != nil { + return err + } + for _, file := range reader.File { + err = validateCompressedConfigFiles(f, file) + if err != nil { + return err + } + } + } + return nil + } +} + +// validateCompressedConfigFiles validates the data inside the compressed json file +func validateCompressedConfigFiles(dirName string, file *zip.File) error { + + if file.FileInfo().Name() == defaultTfJSONFile { + rc, _ := file.Open() + + buf := new(bytes.Buffer) + buf.ReadFrom(rc) + var data map[string]interface{} + + if err := json.Unmarshal(buf.Bytes(), &data); err != nil { + return fmt.Errorf("failed to unmarshal json exportData to map variable: %v", err) + } + + if _, ok := data["resource"]; !ok { + return fmt.Errorf("config file missing resource attribute") + } + + if _, ok := data["terraform"]; !ok { + return fmt.Errorf("config file missing terraform attribute") + } + rc.Close() + return nil + } + return nil +} + func validateConfigFile(path string) resource.TestCheckFunc { return func(state *terraform.State) error { result, err := loadJsonFileToMap(path) diff --git a/genesyscloud/tfexporter/tf_exporter_resource_test.go b/genesyscloud/tfexporter/tf_exporter_resource_test.go index 3ea8cfa57..e2bb97141 100644 --- a/genesyscloud/tfexporter/tf_exporter_resource_test.go +++ b/genesyscloud/tfexporter/tf_exporter_resource_test.go @@ -7,8 +7,11 @@ import ( emergencyGroup "terraform-provider-genesyscloud/genesyscloud/architect_emergencygroup" flow "terraform-provider-genesyscloud/genesyscloud/architect_flow" flowLogLevel "terraform-provider-genesyscloud/genesyscloud/flow_loglevel" + outboundContactListContact "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list_contact" + routingSettings "terraform-provider-genesyscloud/genesyscloud/routing_settings" + routingUtilization "terraform-provider-genesyscloud/genesyscloud/routing_utilization" + routingUtilizationLabel "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" outboundRoute "terraform-provider-genesyscloud/genesyscloud/telephony_providers_edges_site_outbound_route" - grammar "terraform-provider-genesyscloud/genesyscloud/architect_grammar" grammarLanguage "terraform-provider-genesyscloud/genesyscloud/architect_grammar_language" archIvr "terraform-provider-genesyscloud/genesyscloud/architect_ivr" @@ -151,9 +154,9 @@ func (r *registerTestInstance) registerTestResources() { providerResources["genesyscloud_routing_queue_conditional_group_routing"] = routingQueueConditionalGroupRouting.ResourceRoutingQueueConditionalGroupRouting() providerResources["genesyscloud_routing_queue_outbound_email_address"] = routingQueueOutboundEmailAddress.ResourceRoutingQueueOutboundEmailAddress() providerResources["genesyscloud_routing_skill"] = gcloud.ResourceRoutingSkill() - providerResources["genesyscloud_routing_settings"] = gcloud.ResourceRoutingSettings() - providerResources["genesyscloud_routing_utilization"] = gcloud.ResourceRoutingUtilization() - + providerResources["genesyscloud_routing_settings"] = routingSettings.ResourceRoutingSettings() + providerResources["genesyscloud_routing_utilization"] = routingUtilization.ResourceRoutingUtilization() + providerResources["genesyscloud_routing_utilization_label"] = routingUtilizationLabel.ResourceRoutingUtilizationLabel() providerResources["genesyscloud_routing_wrapupcode"] = gcloud.ResourceRoutingWrapupCode() providerResources["genesyscloud_telephony_providers_edges_extension_pool"] = edgeExtension.ResourceTelephonyExtensionPool() providerResources["genesyscloud_telephony_providers_edges_phone"] = edgePhone.ResourcePhone() @@ -175,6 +178,7 @@ func (r *registerTestInstance) registerTestResources() { providerResources["genesyscloud_outbound_callabletimeset"] = obCallableTimeset.ResourceOutboundCallabletimeset() providerResources["genesyscloud_outbound_campaign"] = obCampaign.ResourceOutboundCampaign() providerResources["genesyscloud_outbound_contact_list"] = outboundContactList.ResourceOutboundContactList() + providerResources["genesyscloud_outbound_contact_list_contact"] = outboundContactListContact.ResourceOutboundContactListContact() providerResources["genesyscloud_outbound_contactlistfilter"] = obContactListFilter.ResourceOutboundContactlistfilter() providerResources["genesyscloud_outbound_messagingcampaign"] = ob.ResourceOutboundMessagingCampaign() providerResources["genesyscloud_outbound_sequence"] = obSequence.ResourceOutboundSequence() @@ -240,6 +244,7 @@ func (r *registerTestInstance) registerTestExporters() { RegisterExporter("genesyscloud_outbound_callabletimeset", obCallableTimeset.OutboundCallableTimesetExporter()) RegisterExporter("genesyscloud_outbound_campaign", obCampaign.OutboundCampaignExporter()) RegisterExporter("genesyscloud_outbound_contact_list", outboundContactList.OutboundContactListExporter()) + RegisterExporter("genesyscloud_outbound_contact_list_contact", outboundContactListContact.ContactExporter()) RegisterExporter("genesyscloud_outbound_contactlistfilter", obContactListFilter.OutboundContactlistfilterExporter()) RegisterExporter("genesyscloud_outbound_messagingcampaign", ob.OutboundMessagingcampaignExporter()) RegisterExporter("genesyscloud_outbound_sequence", obSequence.OutboundSequenceExporter()) @@ -260,11 +265,12 @@ func (r *registerTestInstance) registerTestExporters() { RegisterExporter("genesyscloud_routing_queue", routingQueue.RoutingQueueExporter()) RegisterExporter("genesyscloud_routing_queue_conditional_group_routing", routingQueueConditionalGroupRouting.RoutingQueueConditionalGroupRoutingExporter()) RegisterExporter("genesyscloud_routing_queue_outbound_email_address", routingQueueOutboundEmailAddress.OutboundRoutingQueueOutboundEmailAddressExporter()) - RegisterExporter("genesyscloud_routing_settings", gcloud.RoutingSettingsExporter()) + RegisterExporter("genesyscloud_routing_settings", routingSettings.RoutingSettingsExporter()) RegisterExporter("genesyscloud_routing_skill", gcloud.RoutingSkillExporter()) RegisterExporter("genesyscloud_routing_skill_group", gcloud.ResourceSkillGroupExporter()) RegisterExporter("genesyscloud_routing_sms_address", routingSmsAddress.RoutingSmsAddressExporter()) - RegisterExporter("genesyscloud_routing_utilization", gcloud.RoutingUtilizationExporter()) + RegisterExporter("genesyscloud_routing_utilization", routingUtilization.RoutingUtilizationExporter()) + RegisterExporter("genesyscloud_routing_utilization_label", routingUtilizationLabel.RoutingUtilizationLabelExporter()) RegisterExporter("genesyscloud_routing_wrapupcode", gcloud.RoutingWrapupCodeExporter()) RegisterExporter("genesyscloud_telephony_providers_edges_edge_group", edgeGroup.EdgeGroupExporter()) RegisterExporter("genesyscloud_telephony_providers_edges_extension_pool", edgeExtension.TelephonyExtensionPoolExporter()) diff --git a/genesyscloud/user_roles/genesyscloud_user_roles_proxy.go b/genesyscloud/user_roles/genesyscloud_user_roles_proxy.go index c82c59768..348ca624b 100644 --- a/genesyscloud/user_roles/genesyscloud_user_roles_proxy.go +++ b/genesyscloud/user_roles/genesyscloud_user_roles_proxy.go @@ -7,7 +7,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *userRolesProxy diff --git a/genesyscloud/user_roles/resource_genesyscloud_user_roles_utils.go b/genesyscloud/user_roles/resource_genesyscloud_user_roles_utils.go index 629bc643c..9f58a8e8a 100644 --- a/genesyscloud/user_roles/resource_genesyscloud_user_roles_utils.go +++ b/genesyscloud/user_roles/resource_genesyscloud_user_roles_utils.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func flattenSubjectRoles(d *schema.ResourceData, p *userRolesProxy) (*schema.Set, *platformclientv2.APIResponse, error) { diff --git a/genesyscloud/util/feature_toggles/outbound_routes.go b/genesyscloud/util/feature_toggles/outbound_routes.go index d3bf3d035..b2f143601 100644 --- a/genesyscloud/util/feature_toggles/outbound_routes.go +++ b/genesyscloud/util/feature_toggles/outbound_routes.go @@ -2,14 +2,14 @@ package feature_toggles import "os" -const outboundRotesEnvToggle = "ENABLE_STANDALONE_OUTBOUND_ROUTES" +const outboundRoutesEnvToggle = "ENABLE_STANDALONE_OUTBOUND_ROUTES" func OutboundRoutesToggleName() string { - return outboundRotesEnvToggle + return outboundRoutesEnvToggle } func OutboundRoutesToggleExists() bool { var exists bool - _, exists = os.LookupEnv(outboundRotesEnvToggle) + _, exists = os.LookupEnv(outboundRoutesEnvToggle) return exists } diff --git a/genesyscloud/util/lists/util_lists.go b/genesyscloud/util/lists/util_lists.go index 58c13fdce..916c9b0fe 100644 --- a/genesyscloud/util/lists/util_lists.go +++ b/genesyscloud/util/lists/util_lists.go @@ -171,3 +171,15 @@ func Remove[T comparable](s []T, r T) []T { } return s } + +// ConvertMapStringAnyToMapStringString converts a map of type map[string]any to type map[string]string +func ConvertMapStringAnyToMapStringString(m map[string]any) map[string]string { + if m == nil { + return nil + } + sm := make(map[string]string) + for k, v := range m { + sm[k] = v.(string) + } + return sm +} diff --git a/genesyscloud/util/resourcedata/resourcedata.go b/genesyscloud/util/resourcedata/resourcedata.go index 89bb58ff2..066abcfc9 100644 --- a/genesyscloud/util/resourcedata/resourcedata.go +++ b/genesyscloud/util/resourcedata/resourcedata.go @@ -6,7 +6,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/leekchan/timeutil" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) const ( @@ -141,27 +141,27 @@ func SetNillableReferenceDivision(d *schema.ResourceData, key string, value *pla // SetNillableValue will read a basic type and set it on the schema func SetNillableValue[T any](d *schema.ResourceData, key string, value *T) { if value != nil { - d.Set(key, *value) + _ = d.Set(key, *value) } else { - d.Set(key, nil) + _ = d.Set(key, nil) } } -// SetNillableValueWithInterfaceArrayWithFunc will read the values in a nested resource using the provided function and set it on the schema +// SetNillableValueWithInterfaceArrayWithFunc will set the value of {key} to an interface array using func {f} if {value} is not nil func SetNillableValueWithInterfaceArrayWithFunc[T any](d *schema.ResourceData, key string, value *T, f func(*T) []interface{}) { if value != nil { - d.Set(key, f(value)) + _ = d.Set(key, f(value)) } else { - d.Set(key, nil) + _ = d.Set(key, nil) } } -// SetNillableValueWithInterfaceArrayWithFunc will read the values in a nested resource using the provided function and set it on the schema +// SetNillableValueWithSchemaSetWithFunc will set the value of {key} to a *schema.Set using func {f} if {value} is not nil func SetNillableValueWithSchemaSetWithFunc[T any](d *schema.ResourceData, key string, value *T, f func(*T) *schema.Set) { if value != nil { - d.Set(key, f(value)) + _ = d.Set(key, f(value)) } else { - d.Set(key, nil) + _ = d.Set(key, nil) } } diff --git a/genesyscloud/util/test_utils.go b/genesyscloud/util/test_utils.go index ff2e31a2c..a232e5ce0 100644 --- a/genesyscloud/util/test_utils.go +++ b/genesyscloud/util/test_utils.go @@ -308,8 +308,7 @@ func GenerateMapProperty(propName string, propValue string) string { func GenerateMapAttr(name string, properties ...string) string { return fmt.Sprintf(`%s = { %s - } - `, name, strings.Join(properties, "\n")) + }`, name, strings.Join(properties, "\n")) } func GenerateMapAttrWithMapProperties(name string, properties map[string]string) string { diff --git a/genesyscloud/util/util_basesetting_properties.go b/genesyscloud/util/util_basesetting_properties.go index c442d7681..44c0ea6de 100644 --- a/genesyscloud/util/util_basesetting_properties.go +++ b/genesyscloud/util/util_basesetting_properties.go @@ -8,7 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func BuildTelephonyProperties(d *schema.ResourceData) *map[string]interface{} { diff --git a/genesyscloud/util/util_diagnostic_unit_test.go b/genesyscloud/util/util_diagnostic_unit_test.go index f6dd193fb..ec9fb4b9f 100644 --- a/genesyscloud/util/util_diagnostic_unit_test.go +++ b/genesyscloud/util/util_diagnostic_unit_test.go @@ -2,7 +2,7 @@ package util import ( "encoding/json" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "github.com/stretchr/testify/assert" "net/http" "net/url" diff --git a/genesyscloud/util/util_diagnostics.go b/genesyscloud/util/util_diagnostics.go index 8095bf9c7..7a707a3f0 100644 --- a/genesyscloud/util/util_diagnostics.go +++ b/genesyscloud/util/util_diagnostics.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type detailedDiagnosticInfo struct { diff --git a/genesyscloud/util/util_divisions.go b/genesyscloud/util/util_divisions.go index ff49af4c9..91f269645 100644 --- a/genesyscloud/util/util_divisions.go +++ b/genesyscloud/util/util_divisions.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type JsonMap map[string]interface{} diff --git a/genesyscloud/util/util_domainentities.go b/genesyscloud/util/util_domainentities.go index c06bb345b..a72921b5b 100644 --- a/genesyscloud/util/util_domainentities.go +++ b/genesyscloud/util/util_domainentities.go @@ -4,7 +4,7 @@ import ( lists "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func BuildSdkDomainEntityRef(d *schema.ResourceData, idAttr string) *platformclientv2.Domainentityref { diff --git a/genesyscloud/util/util_retries.go b/genesyscloud/util/util_retries.go index a20568128..8c819c434 100644 --- a/genesyscloud/util/util_retries.go +++ b/genesyscloud/util/util_retries.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func WithRetries(ctx context.Context, timeout time.Duration, method func() *retry.RetryError) diag.Diagnostics { diff --git a/genesyscloud/validators/validators.go b/genesyscloud/validators/validators.go index 4c4a78a9d..a375e6bd6 100644 --- a/genesyscloud/validators/validators.go +++ b/genesyscloud/validators/validators.go @@ -94,7 +94,7 @@ func ValidateRrule(rrule interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Provided rrule %v is not in string format", rrule) } -// Validates a phone extension pool +// ValidateExtensionPool validates a phone extension pool func ValidateExtensionPool(number interface{}, _ cty.Path) diag.Diagnostics { if numberStr, ok := number.(string); ok { @@ -109,7 +109,7 @@ func ValidateExtensionPool(number interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Extension provided %v is not a string", number) } -// Validates a date string is in the format yyyy-MM-dd +// ValidateDate validates a date string is in the format yyyy-MM-dd func ValidateDate(date interface{}, _ cty.Path) diag.Diagnostics { if dateStr, ok := date.(string); ok { _, err := time.Parse(resourcedata.DateParseFormat, dateStr) @@ -121,7 +121,7 @@ func ValidateDate(date interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Date %v is not a string", date) } -// Validates a date string is in the format 2006-01-02T15:04Z +// ValidateDateTime validates a date string is in the format 2006-01-02T15:04Z func ValidateDateTime(date interface{}, _ cty.Path) diag.Diagnostics { if dateStr, ok := date.(string); ok { _, err := time.Parse("2006-01-02T15:04Z", dateStr) @@ -133,7 +133,7 @@ func ValidateDateTime(date interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Date %v is not a string", date) } -// Validates a country code is in format ISO 3166-1 alpha-2 +// ValidateCountryCode validates a country code is in format ISO 3166-1 alpha-2 func ValidateCountryCode(code interface{}, _ cty.Path) diag.Diagnostics { countryCode := code.(string) if len(countryCode) == 2 { @@ -144,7 +144,7 @@ func ValidateCountryCode(code interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Country code %v is not of format ISO 3166-1 alpha-2", code) } -// Validates a date string is in format hh:mm:ss +// ValidateTime validates a date string is in format hh:mm:ss func ValidateTime(time interface{}, _ cty.Path) diag.Diagnostics { timeStr := time.(string) if len(timeStr) > 9 { @@ -157,7 +157,7 @@ func ValidateTime(time interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Time %v is not a valid time", time) } -// Validates a date string is in format hh:mm +// ValidateTimeHHMM validates a date string is in format hh:mm func ValidateTimeHHMM(time interface{}, _ cty.Path) diag.Diagnostics { timeStr := time.(string) if timeStr == "" { @@ -171,7 +171,7 @@ func ValidateTimeHHMM(time interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Time %v is not a valid time, must use format HH:mm", time) } -// Validates a date string is in the format 2006-01-02T15:04:05.000000 +// ValidateLocalDateTimes validates a date string is in the format 2006-01-02T15:04:05.000000 func ValidateLocalDateTimes(date interface{}, _ cty.Path) diag.Diagnostics { if dateStr, ok := date.(string); ok { _, err := time.Parse(resourcedata.TimeParseFormat, dateStr) @@ -183,7 +183,7 @@ func ValidateLocalDateTimes(date interface{}, _ cty.Path) diag.Diagnostics { return diag.Errorf("Date %v is not a string", date) } -// Validates a file path or URL +// ValidatePath validates a file path or URL func ValidatePath(i interface{}, k string) (warnings []string, errors []error) { v, ok := i.(string) if !ok { @@ -207,7 +207,7 @@ func ValidatePath(i interface{}, k string) (warnings []string, errors []error) { return warnings, errors } -// Validate a response asset filename matches the criteria outlined in the description +// ValidateResponseAssetName validate a response asset filename matches the criteria outlined in the description func ValidateResponseAssetName(name interface{}, _ cty.Path) diag.Diagnostics { if nameStr, ok := name.(string); ok { matched, err := regexp.MatchString("^[^\\.][^\\`\\\\{\\^\\}\\% \"\\>\\<\\[\\]\\#\\~|]+[^/]$", nameStr) @@ -250,7 +250,7 @@ func ValidateSubStringInSlice(valid []string) schema.SchemaValidateFunc { } } -// Validate if a string matches '#FFFFFF' RGB color representation. +// ValidateHexColor validates if a string matches '#FFFFFF' RGB color representation. func ValidateHexColor(color interface{}, _ cty.Path) diag.Diagnostics { if colorStr, ok := color.(string); ok { matched, err := regexp.MatchString("^#([A-Fa-f0-9]{6})$", colorStr) diff --git a/genesyscloud/webdeployments_configuration/genesyscloud_webdeployments_configuration_proxy.go b/genesyscloud/webdeployments_configuration/genesyscloud_webdeployments_configuration_proxy.go index e4609b7d9..ea0671576 100644 --- a/genesyscloud/webdeployments_configuration/genesyscloud_webdeployments_configuration_proxy.go +++ b/genesyscloud/webdeployments_configuration/genesyscloud_webdeployments_configuration_proxy.go @@ -9,7 +9,7 @@ import ( "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *webDeploymentsConfigurationProxy diff --git a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration.go b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration.go index 60d879d96..ea88bc60a 100644 --- a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration.go +++ b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration.go @@ -19,7 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllWebDeploymentConfigurations(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_schema.go b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_schema.go index ba5c38bea..8cb13177c 100644 --- a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_schema.go +++ b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_schema.go @@ -4,7 +4,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/provider" resourceExporter "terraform-provider-genesyscloud/genesyscloud/resource_exporter" registrar "terraform-provider-genesyscloud/genesyscloud/resource_register" - gcloud "terraform-provider-genesyscloud/genesyscloud/validators" + "terraform-provider-genesyscloud/genesyscloud/validators" wdcUtils "terraform-provider-genesyscloud/genesyscloud/webdeployments_configuration/utils" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -518,13 +518,13 @@ var ( Description: "Background color for hero section, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "text_color": { Description: "Text color for hero section, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "image_uri": { Description: "Background image for hero section", @@ -546,31 +546,31 @@ var ( Description: "Global background color, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "primary_color": { Description: "Global primary color, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "primary_color_dark": { Description: "Global dark primary color, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "primary_color_light": { Description: "Global light primary color, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "text_color": { Description: "Global text color, in hexadecimal format, eg #ffffff", Type: schema.TypeString, Required: true, - ValidateDiagFunc: gcloud.ValidateHexColor, + ValidateDiagFunc: validators.ValidateHexColor, }, "font_family": { Description: "Global font family", diff --git a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_test.go b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_test.go index d83cb8f42..59984641e 100644 --- a/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_test.go +++ b/genesyscloud/webdeployments_configuration/resource_genesyscloud_webdeployments_configuration_test.go @@ -14,7 +14,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) type scCustomMessageConfig struct { diff --git a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_journey.go b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_journey.go index 9d073a5c1..09edc3979 100644 --- a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_journey.go +++ b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_journey.go @@ -4,7 +4,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/lists" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildSelectorEventTriggers(triggers []interface{}) *[]platformclientv2.Selectoreventtrigger { diff --git a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_messenger.go b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_messenger.go index b5deb12fe..e12d1ae40 100644 --- a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_messenger.go +++ b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_messenger.go @@ -2,7 +2,7 @@ package webdeployments_configuration_utils import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" "terraform-provider-genesyscloud/genesyscloud/util/lists" ) diff --git a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_support_center.go b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_support_center.go index 83e53bfcd..f29d7605d 100644 --- a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_support_center.go +++ b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_support_center.go @@ -4,7 +4,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildSupportCenterHeroStyle(styles []interface{}) *platformclientv2.Supportcenterherostyle { diff --git a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_utils.go b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_utils.go index 4a61793cd..b12770c46 100644 --- a/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_utils.go +++ b/genesyscloud/webdeployments_configuration/utils/resource_genesyscloud_webdeployments_configuration_utils.go @@ -7,7 +7,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func buildCobrowseSettings(d *schema.ResourceData) *platformclientv2.Cobrowsesettings { @@ -160,7 +160,7 @@ func FlattenCobrowseSettings(cobrowseSettings *platformclientv2.Cobrowsesettings return []interface{}{map[string]interface{}{ "enabled": cobrowseSettings.Enabled, "allow_agent_control": cobrowseSettings.AllowAgentControl, - "allow_agent_navigation": cobrowseSettings.AllowAgentNavigation, + "allow_agent_navigation": cobrowseSettings.AllowAgentNavigation, "channels": cobrowseSettings.Channels, "mask_selectors": cobrowseSettings.MaskSelectors, "readonly_selectors": cobrowseSettings.ReadonlySelectors, diff --git a/genesyscloud/webdeployments_deployment/genesyscloud_webdeployments_deployment_proxy.go b/genesyscloud/webdeployments_deployment/genesyscloud_webdeployments_deployment_proxy.go index 1fa51d7e1..5dfb49182 100644 --- a/genesyscloud/webdeployments_deployment/genesyscloud_webdeployments_deployment_proxy.go +++ b/genesyscloud/webdeployments_deployment/genesyscloud_webdeployments_deployment_proxy.go @@ -10,7 +10,7 @@ import ( "terraform-provider-genesyscloud/genesyscloud/util" "time" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) var internalProxy *webDeploymentsProxy diff --git a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment.go b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment.go index 2e0012aa1..d8ce2bff2 100644 --- a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment.go +++ b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func getAllWebDeployments(ctx context.Context, clientConfig *platformclientv2.Configuration) (resourceExporter.ResourceIDMetaMap, diag.Diagnostics) { diff --git a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_test.go b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_test.go index 320c085de..0f223d80d 100644 --- a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_test.go +++ b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_test.go @@ -13,7 +13,7 @@ import ( "github.com/google/uuid" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func TestAccResourceWebDeploymentsDeployment(t *testing.T) { diff --git a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_utils.go b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_utils.go index d0f318b06..358560e1e 100644 --- a/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_utils.go +++ b/genesyscloud/webdeployments_deployment/resource_genesyscloud_webdeployments_deployment_utils.go @@ -4,7 +4,7 @@ import ( "errors" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/mypurecloud/platform-client-sdk-go/v130/platformclientv2" + "github.com/mypurecloud/platform-client-sdk-go/v131/platformclientv2" ) func alwaysDifferent(k, old, new string, d *schema.ResourceData) bool { diff --git a/go.mod b/go.mod index 97d022f1b..641f4f37c 100644 --- a/go.mod +++ b/go.mod @@ -6,12 +6,12 @@ require ( github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 - github.com/hashicorp/hcl/v2 v2.20.1 + github.com/hashicorp/hcl/v2 v2.21.0 github.com/hashicorp/terraform-plugin-docs v0.19.4 github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 github.com/leekchan/timeutil v0.0.0-20150802142658-28917288c48d github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 - github.com/mypurecloud/platform-client-sdk-go/v130 v130.0.0 + github.com/mypurecloud/platform-client-sdk-go/v131 v131.0.0 github.com/nyaruka/phonenumbers v1.3.6 github.com/rjNemo/underscore v0.6.1 github.com/zclconf/go-cty v1.14.4 diff --git a/go.sum b/go.sum index fc5087feb..ed2d47cac 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ github.com/hashicorp/hc-install v0.7.0 h1:Uu9edVqjKQxxuD28mR5TikkKDd/p55S8vzPC16 github.com/hashicorp/hc-install v0.7.0/go.mod h1:ELmmzZlGnEcqoUMKUuykHaPCIR1sYLYX+KSggWSKZuA= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= +github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -257,8 +257,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mypurecloud/platform-client-sdk-go/v130 v130.0.0 h1:D6UheKy0j2dFMYMomhx/Qe7IMXeu6fkrUCKUBX11acw= -github.com/mypurecloud/platform-client-sdk-go/v130 v130.0.0/go.mod h1:iDiiCTL8WLcSaLb1W3Qpmj4fGU0kCATO7nvg7098veQ= +github.com/mypurecloud/platform-client-sdk-go/v131 v131.0.0 h1:2YkBK/2pSoaehuSTqhFDXb806nxmHIrz7RxKsQSqM/0= +github.com/mypurecloud/platform-client-sdk-go/v131 v131.0.0/go.mod h1:pWn1ub6TxkdOiI1mgZED+fICo/JiqujY4h+wfgYbOi4= github.com/nyaruka/phonenumbers v1.3.6 h1:33owXWp4d1U+Tyaj9fpci6PbvaQZcXBUO2FybeKeLwQ= github.com/nyaruka/phonenumbers v1.3.6/go.mod h1:Ut+eFwikULbmCenH6InMKL9csUNLyxHuBLyfkpum11s= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= @@ -346,7 +346,7 @@ github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUei github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw= go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= diff --git a/jenkins/tests/Jenkinsfile b/jenkins/tests/Jenkinsfile index 7fd3f102b..3884e0d17 100644 --- a/jenkins/tests/Jenkinsfile +++ b/jenkins/tests/Jenkinsfile @@ -20,7 +20,7 @@ pipeline { GOPATH = "$HOME/go" TF_LOG = "DEBUG" TF_LOG_PATH = "../test.log" - GENESYSCLOUD_REGION = "${region}" + GENESYSCLOUD_REGION = "${region}" GENESYSCLOUD_SDK_DEBUG = "true" GENESYSCLOUD_TOKEN_POOL_SIZE = 20 PATH = "${env.PATH}:${HOME}/go/bin:/home/jenkins/.local/bin" @@ -49,7 +49,7 @@ pipeline { sh 'go install github.com/nezorflame/junit-merger@latest' sh 'pip install xmltodict --user' } - } + } stage('Terraform Check') { steps { @@ -59,6 +59,27 @@ pipeline { } } + stage('Unit Tests') { + + environment { + TF_UNIT=1 + ENABLE_STANDALONE_EMAIL_ADDRESS=1 + ENABLE_STANDALONE_CGR=1 + } + + steps { + catchError(buildResult: 'FAILURE', stageResult:'FAILURE'){ + echo 'Attempting to Run Unit Tests' + withCredentials([usernamePassword(credentialsId: CREDENTIALS_ID, usernameVariable: 'GENESYSCLOUD_OAUTHCLIENT_ID',passwordVariable:'GENESYSCLOUD_OAUTHCLIENT_SECRET')]) + { + echo 'Loading Genesys OAuth Credentials' + sh "gotestsum --junitfile unit.xml --format standard-verbose ./genesyscloud/... -run 'Test|TestUnit' -skip 'TestAcc' -v -timeout 30m -count=1 -cover -coverprofile=coverageUnit.out" + + } + } + } + } + stage('Architect Tests') { environment { TF_ACC=1 @@ -330,16 +351,16 @@ pipeline { sh 'GOBIN=$HOME/bin go install github.com/wadey/gocovmerge@latest' // Generate merged coverage report - sh '$HOME/bin/gocovmerge coverageArchitect.out coverageIdp.out coverageAuth.out coverageIntegration.out coverageFlow.out coverageJourney.out coverageKnowledge.out coverageOutbound.out coverageResponseManagement.out coverageRouting.out coverageExport.out coverageLocation.out coverageWebDeployment.out coverageRemaining.out coverageSite.out coverageRoleTeam.out > merged_coverage.out' + sh '$HOME/bin/gocovmerge coverageArchitect.out coverageIdp.out coverageAuth.out coverageIntegration.out coverageFlow.out coverageJourney.out coverageKnowledge.out coverageOutbound.out coverageResponseManagement.out coverageRouting.out coverageExport.out coverageLocation.out coverageWebDeployment.out coverageRemaining.out coverageSite.out coverageRoleTeam.out coverageUnit.out > merged_coverage.out' // Convert merged coverage report to HTML - sh 'go tool cover -html merged_coverage.out -o coverageAcceptance.html' + sh 'go tool cover -html merged_coverage.out -o coverageReport.html' - sh 'junit-merger -o test-results.xml architect.xml idp.xml auth.xml integration.xml flow.xml journey.xml knowledge.xml outbound.xml response.xml routing.xml location.xml web.xml site.xml team.xml export.xml remaining.xml' + sh 'junit-merger -o test-results.xml unit.xml architect.xml idp.xml auth.xml integration.xml flow.xml journey.xml knowledge.xml outbound.xml response.xml routing.xml location.xml web.xml site.xml team.xml export.xml remaining.xml' script { // Read the generated HTML file - def htmlFile = readFile 'coverageAcceptance.html' + def htmlFile = readFile 'coverageReport.html' def selectStart = htmlFile.indexOf('', selectStart) def fileCoverageSection = htmlFile.substring(selectStart, selectEnd + 9) // +9 to include @@ -494,7 +515,7 @@ pipeline { updatedHtmlFile = updatedHtmlFile.replace('', "\n") updatedHtmlFile = updatedHtmlFile.replace('', tableHtml + '\n' + scriptHtml + '\n') - writeFile file: 'coverageAcceptance.html', text: updatedHtmlFile + writeFile file: 'coverageReport.html', text: updatedHtmlFile // Generate manual report def xmlContent = readFile 'test-results.xml' @@ -675,7 +696,7 @@ pipeline { // Optionally, print the location of the HTML report echo "HTML report generated: \${env.WORKSPACE}/test-report.html" } - archiveArtifacts artifacts: 'coverageAcceptance.html,test-report.html,test-results.xml', allowEmptyArchive: true + archiveArtifacts artifacts: 'coverageReport.html,test-report.html,test-results.xml', allowEmptyArchive: true } } } diff --git a/main.go b/main.go index 76ffaac7a..01df3ea64 100644 --- a/main.go +++ b/main.go @@ -42,6 +42,7 @@ import ( obCampaign "terraform-provider-genesyscloud/genesyscloud/outbound_campaign" obCampaignRule "terraform-provider-genesyscloud/genesyscloud/outbound_campaignrule" obContactList "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list" + outboundContactListContact "terraform-provider-genesyscloud/genesyscloud/outbound_contact_list_contact" obContactListFilter "terraform-provider-genesyscloud/genesyscloud/outbound_contactlistfilter" obDncList "terraform-provider-genesyscloud/genesyscloud/outbound_dnclist" obfst "terraform-provider-genesyscloud/genesyscloud/outbound_filespecificationtemplate" @@ -59,12 +60,15 @@ import ( responsemanagementResponseasset "terraform-provider-genesyscloud/genesyscloud/responsemanagement_responseasset" routingEmailRoute "terraform-provider-genesyscloud/genesyscloud/routing_email_route" routingQueue "terraform-provider-genesyscloud/genesyscloud/routing_queue" + routingUtilization "terraform-provider-genesyscloud/genesyscloud/routing_utilization" + routingUtilizationLabel "terraform-provider-genesyscloud/genesyscloud/routing_utilization_label" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/plugin" routingQueueConditionalGroupRouting "terraform-provider-genesyscloud/genesyscloud/routing_queue_conditional_group_routing" routingQueueOutboundEmailAddress "terraform-provider-genesyscloud/genesyscloud/routing_queue_outbound_email_address" + routingSettings "terraform-provider-genesyscloud/genesyscloud/routing_settings" smsAddresses "terraform-provider-genesyscloud/genesyscloud/routing_sms_addresses" "terraform-provider-genesyscloud/genesyscloud/scripts" "terraform-provider-genesyscloud/genesyscloud/station" @@ -222,6 +226,10 @@ func registerResources() { routingQueue.SetRegistrar(regInstance) //Registering routing queue routingQueueConditionalGroupRouting.SetRegistrar(regInstance) //Registering routing queue conditional group routing routingQueueOutboundEmailAddress.SetRegistrar(regInstance) //Registering routing queue outbound email address + outboundContactListContact.SetRegistrar(regInstance) //Registering outbound contact list contact + routingSettings.SetRegistrar(regInstance) //Registering routing Settings + routingUtilization.SetRegistrar(regInstance) // Registering routing utilization + routingUtilizationLabel.SetRegistrar(regInstance) // Registering routing utilization label journeyViews.SetRegistrar(regInstance) //Registering journey views // setting resources for Use cases like TF export where provider is used in resource classes. diff --git a/test/data/resource/genesyscloud_journey_action_map/basic_optional_attributes/05_update_remove_ignore_frequency_cap.tf b/test/data/resource/genesyscloud_journey_action_map/basic_optional_attributes/05_update_remove_ignore_frequency_cap.tf index 1010bf0fb..a62c9d674 100644 --- a/test/data/resource/genesyscloud_journey_action_map/basic_optional_attributes/05_update_remove_ignore_frequency_cap.tf +++ b/test/data/resource/genesyscloud_journey_action_map/basic_optional_attributes/05_update_remove_ignore_frequency_cap.tf @@ -19,7 +19,7 @@ resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-_action_map_d display_name = "terraform_test_-TEST-CASE-_action_map_dependency" color = "#008000" scope = "Session" - should_display_to_agent = false + should_display_to_agent = false journey { patterns { criteria { diff --git a/test/data/resource/genesyscloud_journey_segment/basic_session_attributes/01_create_session_scope.tf b/test/data/resource/genesyscloud_journey_segment/basic_attributes/01_basic_resource.tf similarity index 100% rename from test/data/resource/genesyscloud_journey_segment/basic_session_attributes/01_create_session_scope.tf rename to test/data/resource/genesyscloud_journey_segment/basic_attributes/01_basic_resource.tf diff --git a/test/data/resource/genesyscloud_journey_segment/basic_session_attributes/02_update_attributes.tf b/test/data/resource/genesyscloud_journey_segment/basic_attributes/02_update_attributes.tf similarity index 100% rename from test/data/resource/genesyscloud_journey_segment/basic_session_attributes/02_update_attributes.tf rename to test/data/resource/genesyscloud_journey_segment/basic_attributes/02_update_attributes.tf diff --git a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/01_create_customer_scope.tf b/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/01_create_customer_scope.tf deleted file mode 100644 index 13cc0599f..000000000 --- a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/01_create_customer_scope.tf +++ /dev/null @@ -1,19 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - display_name = "terraform_test_-TEST-CASE-" - color = "#008000" - should_display_to_agent = false - scope = "Session" - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -} diff --git a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/02_recreate_external_segment_update_name.tf b/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/02_recreate_external_segment_update_name.tf deleted file mode 100644 index 37c77bc7a..000000000 --- a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/02_recreate_external_segment_update_name.tf +++ /dev/null @@ -1,19 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - display_name = "terraform_test_-TEST-CASE-_recreated" - color = "#308000" - should_display_to_agent = false -scope = "Session" - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -} diff --git a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/03_recreate_external_segment_id_force_new.tf b/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/03_recreate_external_segment_id_force_new.tf deleted file mode 100644 index 4b224baf3..000000000 --- a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/03_recreate_external_segment_id_force_new.tf +++ /dev/null @@ -1,20 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - display_name = "terraform_test_-TEST-CASE-_recreated" - color = "#308000" - should_display_to_agent = false - scope = "Session" - - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -} diff --git a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/04_update_color_change.tf b/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/04_update_color_change.tf deleted file mode 100644 index e163793a6..000000000 --- a/test/data/resource/genesyscloud_journey_segment/basic_customer_attributes/04_update_color_change.tf +++ /dev/null @@ -1,20 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - display_name = "terraform_test_-TEST-CASE-_updated" - color = "#318234" - should_display_to_agent = false - scope = "Session" - - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -} diff --git a/test/data/resource/genesyscloud_journey_segment/basic_session_attributes/03_recreate_scope_change_force_new.tf b/test/data/resource/genesyscloud_journey_segment/basic_session_attributes/03_recreate_scope_change_force_new.tf deleted file mode 100644 index 4b224baf3..000000000 --- a/test/data/resource/genesyscloud_journey_segment/basic_session_attributes/03_recreate_scope_change_force_new.tf +++ /dev/null @@ -1,20 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - display_name = "terraform_test_-TEST-CASE-_recreated" - color = "#308000" - should_display_to_agent = false - scope = "Session" - - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -} diff --git a/test/data/resource/genesyscloud_journey_segment/optional_attributes/04_update_remove_assignment_expirition_days.tf b/test/data/resource/genesyscloud_journey_segment/optional_attributes/04_update_remove_assignment_expirition_days.tf deleted file mode 100644 index 255113a57..000000000 --- a/test/data/resource/genesyscloud_journey_segment/optional_attributes/04_update_remove_assignment_expirition_days.tf +++ /dev/null @@ -1,20 +0,0 @@ -resource "genesyscloud_journey_segment" "terraform_test_-TEST-CASE-" { - # required - display_name = "terraform_test_-TEST-CASE-_updated" - color = "#008000" - scope = "Session" - should_display_to_agent = false - journey { - patterns { - criteria { - key = "page.title" - values = ["Title"] - operator = "notEqual" - should_ignore_case = true - } - count = 1 - stream_type = "Web" - session_type = "web" - } - } -}