Skip to content

Commit

Permalink
feat: added read functionality
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Theuermann <[email protected]>
  • Loading branch information
mati007thm committed Dec 16, 2024
1 parent d5dd44d commit 6e87c5c
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 6 deletions.
4 changes: 1 addition & 3 deletions internal/provider/gql.go
Original file line number Diff line number Diff line change
Expand Up @@ -656,8 +656,6 @@ type MicrosoftDefenderConfigurationOptionsInput struct {
ClientId string
SubscriptionsAllowlist []string
SubscriptionsDenylist []string
Certificate string
ClientSecret string
}

type ClientIntegrationConfigurationOptions struct {
Expand All @@ -673,7 +671,7 @@ type ClientIntegrationConfigurationOptions struct {
JiraConfigurationOptions JiraConfigurationOptions `graphql:"... on JiraConfigurationOptions"`
EmailConfigurationOptions EmailConfigurationOptions `graphql:"... on EmailConfigurationOptions"`
GitlabConfigurationOptions GitlabConfigurationOptions `graphql:"... on GitlabConfigurationOptions"`
MicrosoftDefenderConfigurationOptionsInput MicrosoftDefenderConfigurationOptionsInput `graphql:"... on MicrosoftDefenderConfigurationOptionsInput"`
MicrosoftDefenderConfigurationOptionsInput MicrosoftDefenderConfigurationOptionsInput `graphql:"... on MicrosoftDefenderConfigurationOptions"`
// Add other configuration options here
}

Expand Down
2 changes: 1 addition & 1 deletion internal/provider/integration_msdefender_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ func (r *integrationMsDefenderResource) ImportState(ctx context.Context, req res
SubscriptionAllowList: allowList,
SubscriptionDenyList: denyList,
Credential: integrationMsDefenderCredentialModel{
PEMFile: types.StringValue(integration.ConfigurationOptions.MicrosoftDefenderConfigurationOptionsInput.Certificate),
PEMFile: types.StringPointerValue(nil),
},
}

Expand Down
55 changes: 53 additions & 2 deletions internal/provider/integration_zendesk_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ import (
"regexp"

"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
Expand Down Expand Up @@ -114,14 +117,30 @@ func (r *integrationZendeskResource) Schema(ctx context.Context, req resource.Sc
"auto_close": schema.BoolAttribute{
MarkdownDescription: "Automatically close tickets.",
Optional: true,
Computed: true,
Default: booldefault.StaticBool(false),
},
"auto_create": schema.BoolAttribute{
MarkdownDescription: "Automatically create tickets.",
Optional: true,
Computed: true,
Default: booldefault.StaticBool(false),
},
"custom_fields": schema.ListNestedAttribute{
MarkdownDescription: "Custom fields to be added to the Zendesk ticket.",
Optional: true,
Computed: true,
Default: listdefault.StaticValue(
types.ListValueMust(
types.ObjectType{
AttrTypes: map[string]attr.Type{
"id": types.Int64Type,
"value": types.StringType,
},
},
[]attr.Value{},
),
),
NestedObject: schema.NestedAttributeObject{
Attributes: map[string]schema.Attribute{
"id": schema.Int64Attribute{
Expand All @@ -139,7 +158,7 @@ func (r *integrationZendeskResource) Schema(ctx context.Context, req resource.Sc
Required: true,
Attributes: map[string]schema.Attribute{
"token": schema.StringAttribute{
MarkdownDescription: "Token for GitHub integration.",
MarkdownDescription: "Token for Zendesk integration.",
Required: true,
Sensitive: true,
},
Expand Down Expand Up @@ -238,9 +257,41 @@ func (r *integrationZendeskResource) Read(ctx context.Context, req resource.Read
}

// Read API call logic
integration, err := r.client.GetClientIntegration(ctx, data.Mrn.ValueString())
if err != nil {
fmt.Println("Error: ", err)
resp.State.RemoveResource(ctx)
return
}

var customFields []integrationZendeskCustomFieldModel
for _, field := range integration.ConfigurationOptions.ZendeskConfigurationOptions.CustomFields {
customFields = append(customFields, integrationZendeskCustomFieldModel{
ID: types.Int64Value(field.ID),
Value: types.StringValue(field.Value),
})
}

model := integrationZendeskResourceModel{
Mrn: types.StringValue(integration.Mrn),
Name: types.StringValue(integration.Name),
SpaceID: types.StringValue(integration.SpaceID()),
Subdomain: types.StringValue(integration.ConfigurationOptions.ZendeskConfigurationOptions.Subdomain),
Email: types.StringValue(integration.ConfigurationOptions.ZendeskConfigurationOptions.Email),
AutoClose: types.BoolValue(integration.ConfigurationOptions.ZendeskConfigurationOptions.AutoCloseTickets),
AutoCreate: types.BoolValue(integration.ConfigurationOptions.ZendeskConfigurationOptions.AutoCreateTickets),
CustomFields: &customFields,
Credential: &integrationZendeskCredentialModel{
Token: types.StringValue(data.Credential.Token.ValueString()),
},
}

if integration.ConfigurationOptions.ZendeskConfigurationOptions.CustomFields == nil {
model.CustomFields = &[]integrationZendeskCustomFieldModel{}
}

// Save updated data into Terraform state
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
resp.Diagnostics.Append(resp.State.Set(ctx, &model)...)
}

func (r *integrationZendeskResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
Expand Down

0 comments on commit 6e87c5c

Please sign in to comment.