Skip to content

Commit eec86c4

Browse files
authored
chore: not support change the resource id (#120)
1 parent 0e7684d commit eec86c4

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

provider/resource_environment.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func resourceEnvironment() *schema.Resource {
4242
},
4343
"order": {
4444
Type: schema.TypeInt,
45-
Required: true,
45+
Optional: true,
4646
Description: "The environment sorting order.",
4747
ValidateFunc: validation.IntAtLeast(0),
4848
},
@@ -67,10 +67,14 @@ func resourceEnvironment() *schema.Resource {
6767

6868
func resourceEnvironmentUpsert(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
6969
c := m.(api.Client)
70+
existedName := d.Id()
7071

71-
newOrder := d.Get("order").(int)
7272
environmentID := d.Get("resource_id").(string)
7373
environmentName := fmt.Sprintf("%s%s", internal.EnvironmentNamePrefix, environmentID)
74+
75+
if existedName != "" && existedName != environmentName {
76+
return diag.Errorf("cannot change the resource id")
77+
}
7478
v1Env := &v1pb.EnvironmentSetting_Environment{
7579
Id: environmentID,
7680
Title: d.Get("title").(string),
@@ -83,7 +87,7 @@ func resourceEnvironmentUpsert(ctx context.Context, d *schema.ResourceData, m in
8387
v1Env.Tags["protected"] = "unprotected"
8488
}
8589

86-
existedEnv, order, enironmentList, err := findEnvironment(ctx, c, environmentName)
90+
existedEnv, oldOrder, enironmentList, err := findEnvironment(ctx, c, environmentName)
8791
if err != nil {
8892
if !strings.HasPrefix(err.Error(), "cannot found the environment") {
8993
return diag.FromErr(err)
@@ -93,8 +97,16 @@ func resourceEnvironmentUpsert(ctx context.Context, d *schema.ResourceData, m in
9397
return diag.Errorf("cannot found environment setting")
9498
}
9599

96-
if newOrder >= len(enironmentList) {
97-
return diag.Errorf("the new order %v out of range %v", newOrder, len(enironmentList)-1)
100+
var newOrder int
101+
order, ok := d.GetOk("order")
102+
if !ok {
103+
if existedEnv != nil {
104+
newOrder = oldOrder
105+
} else {
106+
newOrder = len(enironmentList)
107+
}
108+
} else {
109+
newOrder = order.(int)
98110
}
99111

100112
var diags diag.Diagnostics
@@ -105,10 +117,14 @@ func resourceEnvironmentUpsert(ctx context.Context, d *schema.ResourceData, m in
105117
Detail: fmt.Sprintf("Environment %s already exists, try to exec the update operation", environmentID),
106118
})
107119

108-
if order == newOrder {
109-
enironmentList[order] = v1Env
120+
if newOrder >= len(enironmentList) {
121+
return diag.Errorf("the new order %v out of range %v", newOrder, len(enironmentList)-1)
122+
}
123+
124+
if oldOrder == newOrder {
125+
enironmentList[oldOrder] = v1Env
110126
} else {
111-
enironmentList = slices.Delete(enironmentList, order, order+1)
127+
enironmentList = slices.Delete(enironmentList, oldOrder, oldOrder+1)
112128
enironmentList = slices.Insert(enironmentList, newOrder, v1Env)
113129
}
114130
} else {

provider/resource_review_config.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,15 @@ func resourceReviewConfigDelete(ctx context.Context, d *schema.ResourceData, m i
130130

131131
func resourceReviewConfigUpsert(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
132132
c := m.(api.Client)
133+
existedName := d.Id()
133134

134135
reviewID := d.Get("resource_id").(string)
135136
reviewName := fmt.Sprintf("%s%s", internal.ReviewConfigNamePrefix, reviewID)
136137

138+
if existedName != "" && existedName != reviewName {
139+
return diag.Errorf("cannot change the resource id")
140+
}
141+
137142
rules, err := convertToV1RuleList(d)
138143
if err != nil {
139144
return diag.FromErr(err)

0 commit comments

Comments
 (0)