diff --git a/internal/provider/app_resource.go b/internal/provider/app_resource.go index 0ce9489..6c4fcb1 100644 --- a/internal/provider/app_resource.go +++ b/internal/provider/app_resource.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -70,34 +71,58 @@ func (r *AppResource) Schema(ctx context.Context, req resource.SchemaRequest, re "name": schema.StringAttribute{ MarkdownDescription: "App name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "app_version": schema.StringAttribute{ MarkdownDescription: "App version", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "organization": schema.StringAttribute{ MarkdownDescription: "Organization name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "manifest": schema.StringAttribute{ MarkdownDescription: "Kubernetes manifest YAML content", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "region": schema.StringAttribute{ MarkdownDescription: "Region (e.g., US, EU)", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "cloudlet_org": schema.StringAttribute{ MarkdownDescription: "Cloudlet organization", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "cloudlet_name": schema.StringAttribute{ MarkdownDescription: "Cloudlet name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "flavor_name": schema.StringAttribute{ MarkdownDescription: "Flavor name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, }, Blocks: map[string]schema.Block{ @@ -111,18 +136,30 @@ func (r *AppResource) Schema(ctx context.Context, req resource.SchemaRequest, re "protocol": schema.StringAttribute{ MarkdownDescription: "Protocol (tcp, udp, icmp)", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "port_range_min": schema.Int64Attribute{ MarkdownDescription: "Minimum port number", Required: true, + PlanModifiers: []planmodifier.Int64{ + int64planmodifier.RequiresReplace(), + }, }, "port_range_max": schema.Int64Attribute{ MarkdownDescription: "Maximum port number", Required: true, + PlanModifiers: []planmodifier.Int64{ + int64planmodifier.RequiresReplace(), + }, }, "remote_cidr": schema.StringAttribute{ MarkdownDescription: "Remote CIDR (e.g., 0.0.0.0/0)", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, }, }, diff --git a/internal/provider/appinst_resource.go b/internal/provider/appinst_resource.go index 1cca25a..ed47da0 100644 --- a/internal/provider/appinst_resource.go +++ b/internal/provider/appinst_resource.go @@ -60,42 +60,65 @@ func (r *AppInstanceResource) Schema(ctx context.Context, req resource.SchemaReq "name": schema.StringAttribute{ MarkdownDescription: "AppInstance name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "organization": schema.StringAttribute{ MarkdownDescription: "Organization name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "region": schema.StringAttribute{ MarkdownDescription: "Region (e.g., US, EU)", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "cloudlet_org": schema.StringAttribute{ MarkdownDescription: "Cloudlet organization", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "cloudlet_name": schema.StringAttribute{ MarkdownDescription: "Cloudlet name", Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "app_name": schema.StringAttribute{ MarkdownDescription: "Application name", - Required: false, - Optional: true, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "app_version": schema.StringAttribute{ MarkdownDescription: "Application version", - Required: false, - Optional: true, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "app_organization": schema.StringAttribute{ MarkdownDescription: "Application organization", - Required: false, - Optional: true, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "flavor_name": schema.StringAttribute{ MarkdownDescription: "Flavor name", - Required: false, - Optional: true, + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, }, "state": schema.StringAttribute{ MarkdownDescription: "AppInstance state",