Skip to content

Commit 00721ed

Browse files
authored
Feat: Schema Validation Overhaul (#128)
## What * Overhaul schema validation by adding `internal/schemautils` and package * Overhaul general utils pattern by removing `utils.go` adding `internal/datautils.go` * Rename and move `client` package to `codefresh.cfclient` * Ensure plan-time CRON validation for `codefresh_pipeline` matches current API constraints, while maintaining backwards compatibility for the deprecated `codefresh_pipeline_cron_trigger` resource, which has different API constraints (6 fields instead of 5) ## Why * More DRY * Better package structure * CRON Validation fix ## Notes <!-- Add any notes here --> ## Checklist * [x] _I have read [CONTRIBUTING.md](https://github.com/codefresh-io/terraform-provider-codefresh/blob/master/CONTRIBUTING.md)._ * [x] _I have [allowed changes to my fork to be made](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)._ * [x] _I have added tests, assuming new tests are warranted_. * [x] _I understand that the `/test` comment will be ignored by the CI trigger [unless it is made by a repo admin or collaborator](https://codefresh.io/docs/docs/pipelines/triggers/git-triggers/#support-for-building-pull-requests-from-forks)._
1 parent 5ed1f24 commit 00721ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+949
-653
lines changed

client/account.go renamed to codefresh/cfclient/account.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"errors"

client/api_key.go renamed to codefresh/cfclient/api_key.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package client
1+
package cfclient
22

33
import (
44
"errors"
55
"fmt"
6-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
76
"log"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
89
)
910

1011
type ApiKeySubject struct {

client/client.go renamed to codefresh/cfclient/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"bytes"

client/context.go renamed to codefresh/cfclient/context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/current_account.go renamed to codefresh/cfclient/current_account.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"encoding/json"

client/gitops_abac_rules.go renamed to codefresh/cfclient/gitops_abac_rules.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/gql_client.go renamed to codefresh/cfclient/gql_client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"bytes"

client/hermes_trigger.go renamed to codefresh/cfclient/hermes_trigger.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/hermes_trigger_event.go renamed to codefresh/cfclient/hermes_trigger_event.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/idp.go renamed to codefresh/cfclient/idp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"errors"

client/permission.go renamed to codefresh/cfclient/permission.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/pipeline.go renamed to codefresh/cfclient/pipeline.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"errors"

client/project.go renamed to codefresh/cfclient/project.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"errors"

client/registry.go renamed to codefresh/cfclient/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/step_types.go renamed to codefresh/cfclient/step_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/team.go renamed to codefresh/cfclient/team.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/user.go renamed to codefresh/cfclient/user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"fmt"

client/utils.go renamed to codefresh/cfclient/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package client
1+
package cfclient
22

33
import (
44
"net/url"

codefresh/context/storage.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package context
22

33
import (
4-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
4+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
55
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
66
)
77

@@ -30,7 +30,7 @@ func ConvertAzureStorageContext(context []interface{}) map[string]interface{} {
3030
return convertStorageContext(context, auth)
3131
}
3232

33-
func flattenStorageContextConfig(spec cfClient.ContextSpec, auth map[string]interface{}) []interface{} {
33+
func flattenStorageContextConfig(spec cfclient.ContextSpec, auth map[string]interface{}) []interface{} {
3434

3535
var res = make([]interface{}, 0)
3636
m := make(map[string]interface{})
@@ -51,14 +51,14 @@ func flattenStorageContextConfig(spec cfClient.ContextSpec, auth map[string]inte
5151

5252
}
5353

54-
func FlattenJsonConfigStorageContextConfig(spec cfClient.ContextSpec) []interface{} {
54+
func FlattenJsonConfigStorageContextConfig(spec cfclient.ContextSpec) []interface{} {
5555
auth := make(map[string]interface{})
5656
auth["json_config"] = spec.Data["auth"].(map[string]interface{})["jsonConfig"]
5757
auth["type"] = spec.Data["type"]
5858
return flattenStorageContextConfig(spec, auth)
5959
}
6060

61-
func FlattenAzureStorageContextConfig(spec cfClient.ContextSpec) []interface{} {
61+
func FlattenAzureStorageContextConfig(spec cfclient.ContextSpec) []interface{} {
6262
auth := make(map[string]interface{})
6363
authParams := spec.Data["auth"].(map[string]interface{})
6464
auth["account_name"] = authParams["accountName"]

codefresh/data_account.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package codefresh
33
import (
44
"fmt"
55

6-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
88
)
99

@@ -33,8 +33,8 @@ func dataSourceAccount() *schema.Resource {
3333

3434
func dataSourceAccountRead(d *schema.ResourceData, meta interface{}) error {
3535

36-
client := meta.(*cfClient.Client)
37-
var account *cfClient.Account
36+
client := meta.(*cfclient.Client)
37+
var account *cfclient.Account
3838
var err error
3939

4040
if _id, _idOk := d.GetOk("_id"); _idOk {
@@ -55,7 +55,7 @@ func dataSourceAccountRead(d *schema.ResourceData, meta interface{}) error {
5555
return mapDataAccountToResource(account, d)
5656
}
5757

58-
func mapDataAccountToResource(account *cfClient.Account, d *schema.ResourceData) error {
58+
func mapDataAccountToResource(account *cfclient.Account, d *schema.ResourceData) error {
5959

6060
if account == nil || account.ID == "" {
6161
return fmt.Errorf("data.codefresh_account - failed to mapDataAccountToResource")

codefresh/data_context.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package codefresh
33
import (
44
"fmt"
55

6-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
77
"github.com/ghodss/yaml"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
99
)
@@ -31,8 +31,8 @@ func dataSourceContext() *schema.Resource {
3131

3232
func dataSourceContextRead(d *schema.ResourceData, meta interface{}) error {
3333

34-
client := meta.(*cfClient.Client)
35-
var context *cfClient.Context
34+
client := meta.(*cfclient.Client)
35+
var context *cfclient.Context
3636
var err error
3737

3838
if name, nameOk := d.GetOk("name"); nameOk {
@@ -51,7 +51,7 @@ func dataSourceContextRead(d *schema.ResourceData, meta interface{}) error {
5151
return mapDataContextToResource(context, d)
5252
}
5353

54-
func mapDataContextToResource(context *cfClient.Context, d *schema.ResourceData) error {
54+
func mapDataContextToResource(context *cfclient.Context, d *schema.ResourceData) error {
5555

5656
if context == nil || context.Metadata.Name == "" {
5757
return fmt.Errorf("data.codefresh_context - failed to mapDataContextToResource")

codefresh/data_current_account.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package codefresh
33
import (
44
"fmt"
55

6-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
88
)
99

@@ -45,8 +45,8 @@ func dataSourceCurrentAccount() *schema.Resource {
4545
}
4646

4747
func dataSourceCurrentAccountRead(d *schema.ResourceData, meta interface{}) error {
48-
client := meta.(*cfClient.Client)
49-
var currentAccount *cfClient.CurrentAccount
48+
client := meta.(*cfclient.Client)
49+
var currentAccount *cfclient.CurrentAccount
5050
var err error
5151

5252
currentAccount, err = client.GetCurrentAccount()
@@ -62,7 +62,7 @@ func dataSourceCurrentAccountRead(d *schema.ResourceData, meta interface{}) erro
6262

6363
}
6464

65-
func mapDataCurrentAccountToResource(currentAccount *cfClient.CurrentAccount, d *schema.ResourceData) error {
65+
func mapDataCurrentAccountToResource(currentAccount *cfclient.CurrentAccount, d *schema.ResourceData) error {
6666

6767
if currentAccount == nil || currentAccount.ID == "" {
6868
return fmt.Errorf("data.codefresh_current_account - failed to mapDataCurrentAccountToResource")

codefresh/data_idps.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ package codefresh
33
import (
44
"fmt"
55

6-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
7+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/internal/datautil"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
89
)
910

@@ -85,7 +86,7 @@ func IdpSchema() map[string]*schema.Schema {
8586

8687
func dataSourceIdpRead(d *schema.ResourceData, meta interface{}) error {
8788

88-
client := meta.(*cfClient.Client)
89+
client := meta.(*cfclient.Client)
8990

9091
idps, err := client.GetIDPs()
9192
if err != nil {
@@ -126,13 +127,13 @@ func dataSourceIdpRead(d *schema.ResourceData, meta interface{}) error {
126127
return nil
127128
}
128129

129-
func mapDataIdpToResource(idp cfClient.IDP, d *schema.ResourceData) error {
130+
func mapDataIdpToResource(idp cfclient.IDP, d *schema.ResourceData) error {
130131

131132
d.SetId(idp.ID)
132133

133134
d.Set("access_token", idp.Access_token) // string `json:"access_token,omitempty"`
134135

135-
d.Set("accounts", flattenStringArr(idp.Accounts)) //
136+
d.Set("accounts", datautil.FlattenStringArr(idp.Accounts)) //
136137
//d.Set("apiHost", idp.ApiHost) // string `json:"apiHost,omitempty"`
137138
//d.Set("apiPathPrefix", idp.ApiPathPrefix) // string `json:"apiPathPrefix,omitempty"`
138139
//d.Set("apiURL", idp.ApiURL) // string `json:"apiURL,omitempty"`
@@ -152,8 +153,8 @@ func mapDataIdpToResource(idp cfClient.IDP, d *schema.ResourceData) error {
152153
//d.Set("redirectUiUrl", idp.RedirectUiUrl) // string `json:"redirectUiUrl,omitempty"`
153154
//d.Set("redirectUrl", idp.RedirectUrl) // string `json:"redirectUrl,omitempty"`
154155
//d.Set("refreshTokenURL", idp.RefreshTokenURL) // string `json:"refreshTokenURL,omitempty"`
155-
d.Set("scopes", flattenStringArr(idp.Scopes)) // []string `json:"scopes,omitempty"`
156-
d.Set("tenant", idp.Tenant) // string `json:"tenant,omitempty"`
156+
d.Set("scopes", datautil.FlattenStringArr(idp.Scopes)) // []string `json:"scopes,omitempty"`
157+
d.Set("tenant", idp.Tenant) // string `json:"tenant,omitempty"`
157158
//d.Set("tokenSecret", idp.TokenSecret) // string `json:"tokenSecret,omitempty"`
158159
//d.Set("tokenURL", idp.TokenURL) // string `json:"tokenURL,omitempty"`
159160
//d.Set("userProfileURL", idp.UserProfileURL) // string `json:"userProfileURL,omitempty"`

codefresh/data_pipelines.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"regexp"
66
"time"
77

8-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
8+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
99
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1010
)
1111

@@ -59,7 +59,7 @@ func dataSourcePipelines() *schema.Resource {
5959

6060
func dataSourcePipelinesRead(d *schema.ResourceData, meta interface{}) error {
6161

62-
client := meta.(*cfClient.Client)
62+
client := meta.(*cfclient.Client)
6363

6464
pipelines, err := client.GetPipelines()
6565
if err != nil {
@@ -76,7 +76,7 @@ func dataSourcePipelinesRead(d *schema.ResourceData, meta interface{}) error {
7676
return nil
7777
}
7878

79-
func mapDataPipelinesToResource(pipelines []cfClient.Pipeline, d *schema.ResourceData) error {
79+
func mapDataPipelinesToResource(pipelines []cfclient.Pipeline, d *schema.ResourceData) error {
8080
var res = make([]map[string]interface{}, len(pipelines))
8181
for i, p := range pipelines {
8282
m := make(map[string]interface{})

codefresh/data_registry.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package codefresh
33
import (
44
"fmt"
55

6-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
6+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
88
)
99

@@ -50,8 +50,8 @@ func dataSourceRegistry() *schema.Resource {
5050

5151
func dataSourceRegistryRead(d *schema.ResourceData, meta interface{}) error {
5252

53-
client := meta.(*cfClient.Client)
54-
var registry *cfClient.Registry
53+
client := meta.(*cfclient.Client)
54+
var registry *cfclient.Registry
5555
var err error
5656

5757
if name, nameOk := d.GetOk("name"); nameOk {
@@ -70,7 +70,7 @@ func dataSourceRegistryRead(d *schema.ResourceData, meta interface{}) error {
7070
return mapDataRegistryToResource(registry, d)
7171
}
7272

73-
func mapDataRegistryToResource(registry *cfClient.Registry, d *schema.ResourceData) error {
73+
func mapDataRegistryToResource(registry *cfclient.Registry, d *schema.ResourceData) error {
7474

7575
if registry == nil || registry.Name == "" {
7676
return fmt.Errorf("data.codefresh_registry - failed to mapDataRegistryToResource")

codefresh/data_step_types.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"fmt"
55
"log"
66

7-
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
7+
"github.com/codefresh-io/terraform-provider-codefresh/codefresh/cfclient"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
99
)
1010

@@ -39,22 +39,22 @@ func dataSourceStepTypes() *schema.Resource {
3939

4040
func dataSourceStepTypesRead(d *schema.ResourceData, meta interface{}) error {
4141

42-
client := meta.(*cfClient.Client)
42+
client := meta.(*cfclient.Client)
4343
var err error
4444
var versions []string
4545
stepTypesIdentifier := d.Get("name").(string)
4646

4747
d.SetId(stepTypesIdentifier)
4848
if versions, err = client.GetStepTypesVersions(stepTypesIdentifier); err == nil {
49-
var stepVersions cfClient.StepTypesVersions
49+
var stepVersions cfclient.StepTypesVersions
5050
stepVersions.Name = stepTypesIdentifier
5151
d.Set("versions", versions)
5252
for _, version := range versions {
5353
stepTypes, err := client.GetStepTypes(stepTypesIdentifier + ":" + version)
5454
if err != nil {
5555
log.Printf("[DEBUG] Skipping version %v due to error %v", version, err)
5656
} else {
57-
stepVersion := cfClient.StepTypesVersion{
57+
stepVersion := cfclient.StepTypesVersion{
5858
VersionNumber: version,
5959
StepTypes: *stepTypes,
6060
}
@@ -68,7 +68,7 @@ func dataSourceStepTypesRead(d *schema.ResourceData, meta interface{}) error {
6868

6969
}
7070

71-
func mapDataSetTypesToResource(stepTypesVersions cfClient.StepTypesVersions, d *schema.ResourceData) error {
71+
func mapDataSetTypesToResource(stepTypesVersions cfclient.StepTypesVersions, d *schema.ResourceData) error {
7272
err := d.Set("name", stepTypesVersions.Name)
7373
if err != nil {
7474
return err

0 commit comments

Comments
 (0)