55 "fmt"
66 "net/http"
77
8- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9-
108 "github.com/cenkalti/backoff/v4"
9+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1110
1211 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
1312 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
@@ -17,50 +16,57 @@ import (
1716 "github.com/terraform-providers/terraform-provider-cloudfoundry/cloudfoundry/managers"
1817)
1918
20- func resourceRoute () * schema.Resource {
19+ func ResourceRoute () * schema.Resource {
2120
2221 return & schema.Resource {
23-
22+ SchemaVersion : 1 ,
2423 CreateContext : resourceRouteCreate ,
2524 ReadContext : resourceRouteRead ,
2625 UpdateContext : resourceRouteUpdate ,
2726 DeleteContext : resourceRouteDelete ,
27+ StateUpgraders : []schema.StateUpgrader {
28+ {
29+ Type : ResourceRouteV0 ().CoreConfigSchema ().ImpliedType (),
30+ Upgrade : patchRouteV0 ,
31+ Version : 0 ,
32+ },
33+ },
2834
2935 Importer : & schema.ResourceImporter {
3036 StateContext : ImportReadContext (resourceRouteRead ),
3137 },
3238
3339 Schema : map [string ]* schema.Schema {
3440
35- "domain" : & schema. Schema {
41+ "domain" : {
3642 Type : schema .TypeString ,
3743 Required : true ,
3844 ForceNew : true ,
3945 },
40- "space" : & schema. Schema {
46+ "space" : {
4147 Type : schema .TypeString ,
4248 Required : true ,
4349 ForceNew : true ,
4450 },
45- "hostname" : & schema. Schema {
51+ "hostname" : {
4652 Type : schema .TypeString ,
4753 Optional : true ,
4854 },
49- "port" : & schema. Schema {
55+ "port" : {
5056 Type : schema .TypeInt ,
5157 Optional : true ,
5258 Computed : true ,
5359 },
54- "path" : & schema. Schema {
60+ "path" : {
5561 Type : schema .TypeString ,
5662 Optional : true ,
5763 ForceNew : true ,
5864 },
59- "endpoint" : & schema. Schema {
65+ "endpoint" : {
6066 Type : schema .TypeString ,
6167 Computed : true ,
6268 },
63- "target" : & schema. Schema {
69+ "target" : {
6470 Type : schema .TypeSet ,
6571 Set : func (v interface {}) int {
6672 elem := v .(map [string ]interface {})
@@ -73,11 +79,11 @@ func resourceRoute() *schema.Resource {
7379 Optional : true ,
7480 Elem : & schema.Resource {
7581 Schema : map [string ]* schema.Schema {
76- "app" : & schema. Schema {
82+ "app" : {
7783 Type : schema .TypeString ,
7884 Required : true ,
7985 },
80- "port" : & schema. Schema {
86+ "port" : {
8187 Type : schema .TypeInt ,
8288 ConfigMode : schema .SchemaConfigModeAttr ,
8389 Optional : true ,
@@ -91,15 +97,15 @@ func resourceRoute() *schema.Resource {
9197}
9298
9399func setRouteStateV3 (session * managers.Session , route resources.Route , d * schema.ResourceData ) (err error ) {
94- d .Set ("domain" , route .DomainGUID )
95- d .Set ("space" , route .SpaceGUID )
96- d .Set ("hostname" , route .Host )
100+ _ = d .Set ("domain" , route .DomainGUID )
101+ _ = d .Set ("space" , route .SpaceGUID )
102+ _ = d .Set ("hostname" , route .Host )
97103
98104 if route .Port != 0 {
99- d .Set ("port" , route .Port )
105+ _ = d .Set ("port" , route .Port )
100106 }
101107
102- d .Set ("path" , route .Path )
108+ _ = d .Set ("path" , route .Path )
103109
104110 // In v3 shared domains and private domains are managed by the same endpoint, differenciating on whether
105111 // a relationship with an org is set
@@ -213,10 +219,10 @@ func resourceRouteCreate(ctx context.Context, d *schema.ResourceData, meta inter
213219 // Separate call to add destinations
214220 if v , ok := d .GetOk ("target" ); ok {
215221 var t interface {}
216- if t , err = addRouteDestinationV3 (route .GUID , getListOfStructs (v .(* schema.Set ).List ()), session ); err != nil {
222+ if t , err = addRouteDestinationV3 (route .GUID , GetListOfStructs (v .(* schema.Set ).List ()), session ); err != nil {
217223 return diag .FromErr (err )
218224 }
219- d .Set ("target" , t )
225+ _ = d .Set ("target" , t )
220226 }
221227
222228 d .SetId (route .GUID )
@@ -299,7 +305,7 @@ func resourceRouteUpdate(ctx context.Context, d *schema.ResourceData, meta inter
299305 var route = resources.Route {}
300306
301307 if targets , ok := d .GetOk ("target" ); ok {
302- err := removeRouteDestinationV3 (d .Id (), getListOfStructs (targets .(* schema.Set ).List ()), session )
308+ err := removeRouteDestinationV3 (d .Id (), GetListOfStructs (targets .(* schema.Set ).List ()), session )
303309 if err != nil {
304310 return diag .FromErr (err )
305311 }
@@ -353,10 +359,10 @@ func resourceRouteUpdate(ctx context.Context, d *schema.ResourceData, meta inter
353359 // Separate call to add destinations
354360 if v , ok := d .GetOk ("target" ); ok {
355361 var t interface {}
356- if t , err = addRouteDestinationV3 (route .GUID , getListOfStructs (v .(* schema.Set ).List ()), session ); err != nil {
362+ if t , err = addRouteDestinationV3 (route .GUID , GetListOfStructs (v .(* schema.Set ).List ()), session ); err != nil {
357363 return diag .FromErr (err )
358364 }
359- d .Set ("target" , t )
365+ _ = d .Set ("target" , t )
360366 }
361367
362368 d .SetId (route .GUID )
@@ -369,7 +375,7 @@ func resourceRouteDelete(ctx context.Context, d *schema.ResourceData, meta inter
369375 session := meta .(* managers.Session )
370376
371377 if targets , ok := d .GetOk ("target" ); ok {
372- err := removeRouteDestinationV3 (d .Id (), getListOfStructs (targets .(* schema.Set ).List ()), session )
378+ err := removeRouteDestinationV3 (d .Id (), GetListOfStructs (targets .(* schema.Set ).List ()), session )
373379 if err != nil {
374380 return diag .FromErr (err )
375381 }
@@ -381,8 +387,8 @@ func resourceRouteDelete(ctx context.Context, d *schema.ResourceData, meta inter
381387 }
382388
383389 err = PollAsyncJob (PollingConfig {
384- session : session ,
385- jobURL : jobURL ,
390+ Session : session ,
391+ JobURL : jobURL ,
386392 })
387393 return diag .FromErr (err )
388394}
0 commit comments