github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/orchestration/v1/stacks_test.go (about)

     1  //go:build acceptance || orchestration || stacks
     2  
     3  package v1
     4  
     5  import (
     6  	"context"
     7  	"testing"
     8  
     9  	"github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients"
    10  	"github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/orchestration/v1/stacks"
    12  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    13  )
    14  
    15  func TestStacksCRUD(t *testing.T) {
    16  	client, err := clients.NewOrchestrationV1Client()
    17  	th.AssertNoErr(t, err)
    18  
    19  	createdStack, err := CreateStack(t, client)
    20  	th.AssertNoErr(t, err)
    21  	defer DeleteStack(t, client, createdStack.Name, createdStack.ID)
    22  
    23  	tools.PrintResource(t, createdStack)
    24  	tools.PrintResource(t, createdStack.CreationTime)
    25  
    26  	template := new(stacks.Template)
    27  	template.Bin = []byte(basicTemplate)
    28  	updateOpts := stacks.UpdateOpts{
    29  		TemplateOpts: template,
    30  		Timeout:      20,
    31  	}
    32  
    33  	err = stacks.Update(context.TODO(), client, createdStack.Name, createdStack.ID, updateOpts).ExtractErr()
    34  	th.AssertNoErr(t, err)
    35  
    36  	err = WaitForStackStatus(client, createdStack.Name, createdStack.ID, "UPDATE_COMPLETE")
    37  	th.AssertNoErr(t, err)
    38  
    39  	var found bool
    40  	allPages, err := stacks.List(client, nil).AllPages(context.TODO())
    41  	th.AssertNoErr(t, err)
    42  	allStacks, err := stacks.ExtractStacks(allPages)
    43  	th.AssertNoErr(t, err)
    44  
    45  	for _, v := range allStacks {
    46  		if v.ID == createdStack.ID {
    47  			found = true
    48  		}
    49  	}
    50  
    51  	th.AssertEquals(t, found, true)
    52  }