diff --git a/internal/service/cloudapi/vins/resource_static_route.go b/internal/service/cloudapi/vins/resource_static_route.go index fafb1a9..eee93df 100644 --- a/internal/service/cloudapi/vins/resource_static_route.go +++ b/internal/service/cloudapi/vins/resource_static_route.go @@ -34,6 +34,7 @@ package vins import ( "context" + "fmt" "strconv" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" @@ -43,7 +44,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - log "github.com/sirupsen/logrus" ) func resourceStaticRouteCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { @@ -90,8 +90,7 @@ func resourceStaticRouteCreate(ctx context.Context, d *schema.ResourceData, m in return diag.FromErr(err) } - d.SetId(strconv.FormatUint(staticRouteData.ID, 10)) - log.Debugf("TRY TO SET STATE ID %v", staticRouteData.ID) + d.SetId(fmt.Sprintf("%d#%d", req.VINSID, staticRouteData.ID)) return resourceStaticRouteRead(ctx, d, m) } @@ -179,8 +178,8 @@ func resourceStaticRouteUpdate(ctx context.Context, d *schema.ResourceData, m in } } } - defer resourceVinsRead(ctx, d, m) - return warnings.Get() + + return append(warnings.Get(), resourceStaticRouteRead(ctx, d, m)...) } func resourceStaticRouteDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { diff --git a/internal/service/cloudapi/vins/utility_static_route.go b/internal/service/cloudapi/vins/utility_static_route.go index 82ea6a8..704b6f8 100644 --- a/internal/service/cloudapi/vins/utility_static_route.go +++ b/internal/service/cloudapi/vins/utility_static_route.go @@ -36,6 +36,7 @@ import ( "context" "fmt" "strconv" + "strings" log "github.com/sirupsen/logrus" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" @@ -47,8 +48,20 @@ import ( func utilityDataStaticRouteCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.ItemRoutes, error) { c := m.(*controller.ControllerCfg) req := vins.StaticRouteListRequest{} + var routeId uint64 - req.VINSID = uint64(d.Get("vins_id").(int)) + if d.Id() != "" { + arr := strings.Split(d.Id(), "#") + if len(arr) != 2 { + return nil, fmt.Errorf("broken state id") + } + + req.VINSID, _ = strconv.ParseUint(arr[0], 10, 64) + routeId, _ = strconv.ParseUint(arr[1], 10, 64) + } else { + req.VINSID = uint64(d.Get("vins_id").(int)) + routeId = uint64(d.Get("route_id").(int)) + } log.Debugf("utilityStaticRouteCheckPresence, vins_id: %v", req.VINSID) staticRouteList, err := c.CloudAPI().VINS().StaticRouteList(ctx, req) @@ -56,8 +69,6 @@ func utilityDataStaticRouteCheckPresence(ctx context.Context, d *schema.Resource return nil, err } - routeId, _ := strconv.ParseUint(d.Id(), 10, 64) - log.Debugf("utilityStaticRouteCheckPresence: ROUTE ID %v", routeId) staticRoute := &vins.ItemRoutes{}