github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/baremetal/httpbasic/ports_test.go (about) 1 //go:build acceptance || baremetal || ports 2 3 package httpbasic 4 5 import ( 6 "context" 7 "testing" 8 9 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients" 10 v1 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/openstack/baremetal/v1" 11 "github.com/vnpaycloud-console/gophercloud/v2/openstack/baremetal/v1/ports" 12 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 13 14 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 15 ) 16 17 func TestPortsCreateDestroy(t *testing.T) { 18 clients.RequireLong(t) 19 clients.RequireIronicHTTPBasic(t) 20 21 client, err := clients.NewBareMetalV1HTTPBasic() 22 th.AssertNoErr(t, err) 23 client.Microversion = "1.53" 24 25 node, err := v1.CreateFakeNode(t, client) 26 th.AssertNoErr(t, err) 27 port, err := v1.CreatePort(t, client, node) 28 th.AssertNoErr(t, err) 29 defer v1.DeleteNode(t, client, node) 30 defer v1.DeletePort(t, client, port) 31 32 found := false 33 err = ports.List(client, ports.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 34 portList, err := ports.ExtractPorts(page) 35 if err != nil { 36 return false, err 37 } 38 39 for _, p := range portList { 40 if p.UUID == port.UUID { 41 found = true 42 return true, nil 43 } 44 } 45 46 return false, nil 47 }) 48 th.AssertNoErr(t, err) 49 50 th.AssertEquals(t, found, true) 51 } 52 53 func TestPortsUpdate(t *testing.T) { 54 clients.RequireLong(t) 55 clients.RequireIronicHTTPBasic(t) 56 57 client, err := clients.NewBareMetalV1HTTPBasic() 58 th.AssertNoErr(t, err) 59 client.Microversion = "1.53" 60 61 node, err := v1.CreateFakeNode(t, client) 62 th.AssertNoErr(t, err) 63 port, err := v1.CreatePort(t, client, node) 64 th.AssertNoErr(t, err) 65 defer v1.DeleteNode(t, client, node) 66 defer v1.DeletePort(t, client, port) 67 68 updated, err := ports.Update(context.TODO(), client, port.UUID, ports.UpdateOpts{ 69 ports.UpdateOperation{ 70 Op: ports.ReplaceOp, 71 Path: "/address", 72 Value: "aa:bb:cc:dd:ee:ff", 73 }, 74 }).Extract() 75 th.AssertNoErr(t, err) 76 77 th.AssertEquals(t, updated.Address, "aa:bb:cc:dd:ee:ff") 78 }