github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/clustering/v1/webhooktrigger_test.go (about) 1 //go:build acceptance || clustering || webhooks 2 // +build acceptance clustering webhooks 3 4 package v1 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/openstack/clustering/v1/nodes" 11 "github.com/gophercloud/gophercloud/openstack/clustering/v1/webhooks" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestClusteringWebhookTrigger(t *testing.T) { 16 17 client, err := clients.NewClusteringV1Client() 18 if err != nil { 19 t.Fatalf("Unable to create clustering client: %v", err) 20 } 21 22 opts := webhooks.TriggerOpts{ 23 V: "1", 24 } 25 26 // create profile, cluster and receiver first 27 profile, err := CreateProfile(t, client) 28 th.AssertNoErr(t, err) 29 defer DeleteProfile(t, client, profile.ID) 30 31 cluster, err := CreateCluster(t, client, profile.ID) 32 th.AssertNoErr(t, err) 33 defer DeleteCluster(t, client, cluster.ID) 34 35 receiver, err := CreateWebhookReceiver(t, client, cluster.ID) 36 th.AssertNoErr(t, err) 37 defer DeleteReceiver(t, client, receiver.ID) 38 39 // trigger webhook 40 actionID, err := webhooks.Trigger(client, receiver.ID, opts).Extract() 41 if err != nil { 42 t.Fatalf("Unable to extract webhooks trigger: %v", err) 43 } else { 44 t.Logf("Webhook trigger action id %s", actionID) 45 } 46 47 err = WaitForAction(client, actionID) 48 if err != nil { 49 t.Fatalf("Error scaling out cluster %s as a result from webhook trigger: %s:", cluster.ID, err) 50 } 51 52 // check that new node was created 53 nodelistopts := nodes.ListOpts{ 54 ClusterID: cluster.ID, 55 } 56 57 allPages, err := nodes.List(client, nodelistopts).AllPages() 58 th.AssertNoErr(t, err) 59 60 allNodes, err := nodes.ExtractNodes(allPages) 61 th.AssertNoErr(t, err) 62 63 // there should be 2 nodes in the cluster after triggering webhook 64 th.AssertEquals(t, len(allNodes), 2) 65 }