fix(provider): fix repository actions secret resource update

This commit is contained in:
Julien Dessaux 2025-05-23 15:17:22 +02:00
parent 1c70b5d949
commit eb53b28b00
Signed by: adyxax
GPG key ID: F92E51B86E07177E
3 changed files with 18 additions and 13 deletions

View file

@ -15,7 +15,7 @@ Use this resource to create and manage a repository actions secret.
```terraform
resource "forgejo_repository_actions_secret" {
data = "secret"
name = "test"
name = "TEST"
owner = "adyxax"
repository = "example"
}
@ -27,7 +27,7 @@ resource "forgejo_repository_actions_secret" {
### Required
- `data` (String, Sensitive) The secret's data.
- `name` (String) The secret's name.
- `name` (String) The secret's name. It must be uppercase or the plan will not be idempotent.
- `owner` (String) The secret's owner.
- `repository` (String) The secret's repository.

View file

@ -1,6 +1,6 @@
resource "forgejo_repository_actions_secret" {
data = "secret"
name = "test"
name = "TEST"
owner = "adyxax"
repository = "example"
}

View file

@ -49,7 +49,7 @@ func (d *RepositoryActionsSecretResource) Schema(ctx context.Context, req resour
Sensitive: true,
},
"name": schema.StringAttribute{
MarkdownDescription: "The secret's name.",
MarkdownDescription: "The secret's name. It must be uppercase or the plan will not be idempotent.",
PlanModifiers: []planmodifier.String{
stringplanmodifier.RequiresReplace(),
},
@ -94,12 +94,12 @@ func (d *RepositoryActionsSecretResource) Create(ctx context.Context, req resour
resp.Diagnostics.AddError("CreateRepositoryActionsSecret", fmt.Sprintf("failed to create or update repository actions secret: %s", err))
return
}
created, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
secret, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
if err != nil {
resp.Diagnostics.AddError("CreateRepositoryActionsSecret", err.Error())
return
}
data.CreatedAt = *created
data.CreatedAt = secret.CreatedAt
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
}
@ -125,7 +125,7 @@ func (d *RepositoryActionsSecretResource) getRepositoryActionsSecret(
owner types.String,
repository types.String,
name types.String,
) (*timetypes.RFC3339, error) {
) (*RepositoryActionsSecretResourceModel, error) {
secrets, err := d.client.RepositoryActionsSecretsList(
ctx,
owner.ValueString(),
@ -137,7 +137,10 @@ func (d *RepositoryActionsSecretResource) getRepositoryActionsSecret(
for _, secret := range secrets {
if secret.Name == nameStr {
created := timetypes.NewRFC3339TimeValue(secret.CreatedAt)
return &created, nil
return &RepositoryActionsSecretResourceModel{
CreatedAt: created,
Name: types.StringValue(secret.Name),
}, nil
}
}
return nil, fmt.Errorf("failed to find repository actions secret")
@ -149,18 +152,19 @@ func (d *RepositoryActionsSecretResource) Read(ctx context.Context, req resource
if resp.Diagnostics.HasError() {
return
}
created, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
secret, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
if err != nil {
resp.Diagnostics.AddError("CreateRepositoryActionsSecret", err.Error())
return
}
data.CreatedAt = *created
data.CreatedAt = secret.CreatedAt
data.Name = secret.Name
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
}
func (d *RepositoryActionsSecretResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
var data RepositoryActionsSecretResourceModel
resp.Diagnostics.Append(req.State.Get(ctx, &data)...)
resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...)
if resp.Diagnostics.HasError() {
return
}
@ -174,10 +178,11 @@ func (d *RepositoryActionsSecretResource) Update(ctx context.Context, req resour
resp.Diagnostics.AddError("UpdateRepositoryActionsSecret", fmt.Sprintf("failed to create or update repository actions secret: %s", err))
return
}
created, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
secret, err := d.getRepositoryActionsSecret(ctx, data.Owner, data.Repository, data.Name)
if err != nil {
resp.Diagnostics.AddError("UpdateRepositoryActionsSecret", err.Error())
return
}
data.CreatedAt = *created
data.CreatedAt = secret.CreatedAt
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
}