@@ -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
6868func 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 {
0 commit comments