Skip to content

Commit a29f31b

Browse files
committed
feat(provider): introduce environment alias resource
1 parent 10b897f commit a29f31b

File tree

13 files changed

+548
-0
lines changed

13 files changed

+548
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "contentful_environment_alias Resource - terraform-provider-contentful"
4+
subcategory: ""
5+
description: |-
6+
7+
---
8+
9+
# contentful_environment_alias (Resource)
10+
11+
12+
13+
## Example Usage
14+
15+
```terraform
16+
resource "contentful_environment_alias" "example" {
17+
space_id = "space-id"
18+
environment_alias_id = "staging"
19+
target_environment_id = "staging-yyyy-mm-dd"
20+
}
21+
```
22+
23+
<!-- schema generated by tfplugindocs -->
24+
## Schema
25+
26+
### Required
27+
28+
- `environment_alias_id` (String)
29+
- `space_id` (String)
30+
- `target_environment_id` (String)
31+
32+
### Read-Only
33+
34+
- `id` (String) The ID of this resource.
35+
36+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resource "contentful_environment_alias" "example" {
2+
space_id = "space-id"
3+
environment_alias_id = "staging"
4+
target_environment_id = "staging-yyyy-mm-dd"
5+
}

internal/provider/contentful_provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ func (p *ContentfulProvider) Resources(_ context.Context) []func() resource.Reso
187187
NewContentTypeResource,
188188
NewDeliveryApiKeyResource,
189189
NewEditorInterfaceResource,
190+
NewEnvironmentAliasResource,
190191
NewEnvironmentResource,
191192
NewEntryResource,
192193
NewExtensionResource,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package provider
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-framework/types"
5+
)
6+
7+
type EnvironmentAliasIdentityModel struct {
8+
SpaceID types.String `tfsdk:"space_id"`
9+
EnvironmentAliasID types.String `tfsdk:"environment_alias_id"`
10+
}
11+
12+
type EnvironmentAliasModel struct {
13+
IDIdentityModel
14+
EnvironmentAliasIdentityModel
15+
16+
TargetEnvironmentID types.String `tfsdk:"target_environment_id"`
17+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package provider
2+
3+
import (
4+
"context"
5+
6+
cm "github.com/cysp/terraform-provider-contentful/internal/contentful-management-go"
7+
"github.com/hashicorp/terraform-plugin-framework/diag"
8+
)
9+
10+
func (model *EnvironmentAliasModel) ToEnvironmentAliasData(_ context.Context) (cm.EnvironmentAliasData, diag.Diagnostics) {
11+
diags := diag.Diagnostics{}
12+
13+
environmentAliasRequest := cm.EnvironmentAliasData{
14+
Environment: cm.EnvironmentLink{
15+
Sys: cm.EnvironmentLinkSys{
16+
Type: cm.EnvironmentLinkSysTypeLink,
17+
LinkType: cm.EnvironmentLinkSysLinkTypeEnvironment,
18+
ID: model.TargetEnvironmentID.ValueString(),
19+
},
20+
},
21+
}
22+
23+
return environmentAliasRequest, diags
24+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package provider
2+
3+
import (
4+
"context"
5+
"strings"
6+
7+
cm "github.com/cysp/terraform-provider-contentful/internal/contentful-management-go"
8+
"github.com/hashicorp/terraform-plugin-framework/diag"
9+
"github.com/hashicorp/terraform-plugin-framework/types"
10+
)
11+
12+
func NewEnvironmentAliasResourceModelFromResponse(_ context.Context, environmentAlias cm.EnvironmentAlias) (EnvironmentAliasModel, diag.Diagnostics) {
13+
diags := diag.Diagnostics{}
14+
15+
spaceID := environmentAlias.Sys.Space.Sys.ID
16+
environmentAliasID := environmentAlias.Sys.ID
17+
targetEnvironmentID := environmentAlias.Environment.Sys.ID
18+
19+
model := EnvironmentAliasModel{
20+
IDIdentityModel: IDIdentityModel{
21+
ID: types.StringValue(strings.Join([]string{spaceID, environmentAliasID}, "/")),
22+
},
23+
EnvironmentAliasIdentityModel: EnvironmentAliasIdentityModel{
24+
SpaceID: types.StringValue(spaceID),
25+
EnvironmentAliasID: types.StringValue(environmentAliasID),
26+
},
27+
}
28+
29+
model.TargetEnvironmentID = types.StringValue(targetEnvironmentID)
30+
31+
return model, diags
32+
}

0 commit comments

Comments
 (0)