Skip to content

Commit

Permalink
restructure packages
Browse files Browse the repository at this point in the history
  • Loading branch information
yoursnerdly committed Dec 15, 2024
1 parent 2e8c25a commit ca539a6
Show file tree
Hide file tree
Showing 14 changed files with 169 additions and 127 deletions.
6 changes: 6 additions & 0 deletions cyral/internal/policy/set/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package policyset

const (
policySetResourceName = "cyral_policy_set"
policySetDataSourceName = policySetResourceName
)
Original file line number Diff line number Diff line change
Expand Up @@ -103,59 +103,3 @@ func policySetDataSourceSchema() *schema.Resource {
},
}
}

var policyWizardsDataSourceContextHandler = core.ContextHandler{
ResourceName: policySetDataSourceName,
ResourceType: resourcetype.DataSource,
Read: readPolicyWizards,
}

func policyWizardsDataSourceSchema() *schema.Resource {
return &schema.Resource{
Description: "This data source provides information policy wizards",
ReadContext: policyWizardsDataSourceContextHandler.ReadContext,
Schema: map[string]*schema.Schema{
"wizard_id": {
Description: "id of the policy wizard of interest.",
Type: schema.TypeString,
Optional: true,
},
"wizards": {
Description: "Set of supported policy wizards.",
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Resource{
Description: "Information about a policy wizard.",
Schema: map[string]*schema.Schema{
"id": {
Description: "Identifier for the policy wizard, use as the value of wizard_id parameter in the policy set resource.",
Type: schema.TypeString,
Required: true,
},
"name": {
Description: "Name of the policy wizard.",
Type: schema.TypeString,
Computed: true,
},
"description": {
Description: "Description of the policy wizard.",
Type: schema.TypeString,
Computed: true,
},
"tags": {
Description: "Tags associated with the policy wizard.",
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"parameter_schema": {
Description: "JSON schema for the policy wizard parameters.",
Type: schema.TypeString,
Computed: true,
},
},
},
},
},
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (
methods "buf.build/gen/go/cyral/policy/grpc/go/policy/v1/policyv1grpc"
msg "buf.build/gen/go/cyral/policy/protocolbuffers/go/policy/v1"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/cyralinc/terraform-provider-cyral/cyral/client"
"github.com/cyralinc/terraform-provider-cyral/cyral/utils"
Expand Down Expand Up @@ -168,56 +166,3 @@ func deletePolicySet(ctx context.Context, cl *client.Client, rd *schema.Resource
_, err := grpcClient.DeletePolicySet(ctx, req)
return err
}

func readPolicyWizards(ctx context.Context, cl *client.Client, rd *schema.ResourceData) error {
var wizardList []*msg.PolicyWizard

wizId := rd.Get("wizard_id").(string)
grpcClient := methods.NewPolicyWizardServiceClient(cl.GRPCClient())
if wizId != "" {
req := &msg.ReadPolicyWizardRequest{
Id: wizId,
}
resp, err := grpcClient.ReadPolicyWizard(ctx, req)
if err != nil && status.Code(err) != codes.NotFound {
return err
}
if status.Code(err) != codes.NotFound {
wizardList = []*msg.PolicyWizard{resp.GetPolicyWizard()}
}
} else {
req := &msg.ListPolicyWizardsRequest{}
resp, err := grpcClient.ListPolicyWizards(ctx, req)
if err != nil {
return err
}
wizardList = resp.GetPolicyWizards()
}
updatePolicyWizardsSchema(wizardList, rd)
return nil
}

func wizardToMap(wiz *msg.PolicyWizard) map[string]any {
return map[string]any{
"id": wiz.GetId(),
"name": wiz.GetName(),
"description": wiz.GetDescription(),
"parameter_schema": wiz.GetParameterSchema(),
"tags": func() []any {
tags := make([]any, 0, len(wiz.GetTags()))
for _, t := range wiz.GetTags() {
tags = append(tags, t)
}
return tags
}(),
}
}

func updatePolicyWizardsSchema(wizards []*msg.PolicyWizard, rd *schema.ResourceData) {
wizardList := make([]any, 0, len(wizards))
for _, wiz := range wizards {
wizardList = append(wizardList, wizardToMap(wiz))
}
rd.Set("wizards", wizardList)
rd.SetId("cyral-wizard-list")
}
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,6 @@ func (p *packageSchema) Schemas() []*core.SchemaDescriptor {
Type: core.DataSourceSchemaType,
Schema: policySetDataSourceSchema,
},
{
Name: policyWizardsDataSourceName,
Type: core.DataSourceSchemaType,
Schema: policyWizardsDataSourceSchema,
},
{
Name: policySetResourceName,
Type: core.ResourceSchemaType,
Expand Down
5 changes: 5 additions & 0 deletions cyral/internal/policy/wizard/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package wizard

const (
policyWizardsDataSourceName = "cyral_policy_wizards"
)
64 changes: 64 additions & 0 deletions cyral/internal/policy/wizard/datasource.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package wizard

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

"github.com/cyralinc/terraform-provider-cyral/cyral/core"
"github.com/cyralinc/terraform-provider-cyral/cyral/core/types/resourcetype"
)

var policyWizardsDataSourceContextHandler = core.ContextHandler{
ResourceName: policyWizardsDataSourceName,
ResourceType: resourcetype.DataSource,
Read: readPolicyWizards,
}

func policyWizardsDataSourceSchema() *schema.Resource {
return &schema.Resource{
Description: "This data source provides information policy wizards",
ReadContext: policyWizardsDataSourceContextHandler.ReadContext,
Schema: map[string]*schema.Schema{
"wizard_id": {
Description: "id of the policy wizard of interest.",
Type: schema.TypeString,
Optional: true,
},
"wizards": {
Description: "Set of supported policy wizards.",
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Resource{
Description: "Information about a policy wizard.",
Schema: map[string]*schema.Schema{
"id": {
Description: "Identifier for the policy wizard, use as the value of wizard_id parameter in the policy set resource.",
Type: schema.TypeString,
Required: true,
},
"name": {
Description: "Name of the policy wizard.",
Type: schema.TypeString,
Computed: true,
},
"description": {
Description: "Description of the policy wizard.",
Type: schema.TypeString,
Computed: true,
},
"tags": {
Description: "Tags associated with the policy wizard.",
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"parameter_schema": {
Description: "JSON schema for the policy wizard parameters.",
Type: schema.TypeString,
Computed: true,
},
},
},
},
},
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package policyv2_test
package wizard_test

import (
"testing"
Expand Down
66 changes: 66 additions & 0 deletions cyral/internal/policy/wizard/model.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package wizard

import (
"context"

methods "buf.build/gen/go/cyral/policy/grpc/go/policy/v1/policyv1grpc"
msg "buf.build/gen/go/cyral/policy/protocolbuffers/go/policy/v1"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/cyralinc/terraform-provider-cyral/cyral/client"
)

func readPolicyWizards(ctx context.Context, cl *client.Client, rd *schema.ResourceData) error {
var wizardList []*msg.PolicyWizard

wizId := rd.Get("wizard_id").(string)
grpcClient := methods.NewPolicyWizardServiceClient(cl.GRPCClient())
if wizId != "" {
req := &msg.ReadPolicyWizardRequest{
Id: wizId,
}
resp, err := grpcClient.ReadPolicyWizard(ctx, req)
if err != nil && status.Code(err) != codes.NotFound {
return err
}
if status.Code(err) != codes.NotFound {
wizardList = []*msg.PolicyWizard{resp.GetPolicyWizard()}
}
} else {
req := &msg.ListPolicyWizardsRequest{}
resp, err := grpcClient.ListPolicyWizards(ctx, req)
if err != nil {
return err
}
wizardList = resp.GetPolicyWizards()
}
updatePolicyWizardsSchema(wizardList, rd)
return nil
}

func wizardToMap(wiz *msg.PolicyWizard) map[string]any {
return map[string]any{
"id": wiz.GetId(),
"name": wiz.GetName(),
"description": wiz.GetDescription(),
"parameter_schema": wiz.GetParameterSchema(),
"tags": func() []any {
tags := make([]any, 0, len(wiz.GetTags()))
for _, t := range wiz.GetTags() {
tags = append(tags, t)
}
return tags
}(),
}
}

func updatePolicyWizardsSchema(wizards []*msg.PolicyWizard, rd *schema.ResourceData) {
wizardList := make([]any, 0, len(wizards))
for _, wiz := range wizards {
wizardList = append(wizardList, wizardToMap(wiz))
}
rd.Set("wizards", wizardList)
rd.SetId("cyral-wizard-list")
}
24 changes: 24 additions & 0 deletions cyral/internal/policy/wizard/schema_loader.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package wizard

import "github.com/cyralinc/terraform-provider-cyral/cyral/core"

type packageSchema struct {
}

func (p *packageSchema) Name() string {
return "policyset"
}

func (p *packageSchema) Schemas() []*core.SchemaDescriptor {
return []*core.SchemaDescriptor{
{
Name: policyWizardsDataSourceName,
Type: core.DataSourceSchemaType,
Schema: policyWizardsDataSourceSchema,
},
}
}

func PackageSchema() core.PackageSchema {
return &packageSchema{}
}
7 changes: 0 additions & 7 deletions cyral/internal/policyset/constants.go

This file was deleted.

2 changes: 0 additions & 2 deletions cyral/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,6 @@ func getCredentials(d *schema.ResourceData) (string, string, diag.Diagnostics) {
return clientID, clientSecret, diags
}

var provider = Provider()

var ProviderFactories = map[string]func() (*schema.Provider, error){
"cyral": func() (*schema.Provider, error) {
return Provider(), nil
Expand Down
4 changes: 3 additions & 1 deletion cyral/provider/schema_loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ import (
integration_slack "github.com/cyralinc/terraform-provider-cyral/cyral/internal/integration/slack"
integration_teams "github.com/cyralinc/terraform-provider-cyral/cyral/internal/integration/teams"
"github.com/cyralinc/terraform-provider-cyral/cyral/internal/permission"
policyset "github.com/cyralinc/terraform-provider-cyral/cyral/internal/policy/set"
policyv2 "github.com/cyralinc/terraform-provider-cyral/cyral/internal/policy/v2"
"github.com/cyralinc/terraform-provider-cyral/cyral/internal/policyset"
policywizard "github.com/cyralinc/terraform-provider-cyral/cyral/internal/policy/wizard"
"github.com/cyralinc/terraform-provider-cyral/cyral/internal/regopolicy"
"github.com/cyralinc/terraform-provider-cyral/cyral/internal/repository"
repository_accessgateway "github.com/cyralinc/terraform-provider-cyral/cyral/internal/repository/accessgateway"
Expand Down Expand Up @@ -58,6 +59,7 @@ func packagesSchemas() []core.PackageSchema {
permission.PackageSchema(),
policyv2.PackageSchema(),
policyset.PackageSchema(),
policywizard.PackageSchema(),
regopolicy.PackageSchema(),
repository.PackageSchema(),
repository_accessgateway.PackageSchema(),
Expand Down

0 comments on commit ca539a6

Please sign in to comment.