github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/baremetal/v1/nodes_test.go (about) 1 //go:build acceptance || baremetal || nodes 2 // +build acceptance baremetal nodes 3 4 package v1 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/openstack/baremetal/v1/nodes" 11 "github.com/gophercloud/gophercloud/pagination" 12 13 th "github.com/gophercloud/gophercloud/testhelper" 14 ) 15 16 func TestNodesCreateDestroy(t *testing.T) { 17 clients.RequireLong(t) 18 19 client, err := clients.NewBareMetalV1Client() 20 th.AssertNoErr(t, err) 21 client.Microversion = "1.38" 22 23 node, err := CreateNode(t, client) 24 th.AssertNoErr(t, err) 25 defer DeleteNode(t, client, node) 26 27 found := false 28 err = nodes.List(client, nodes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { 29 nodeList, err := nodes.ExtractNodes(page) 30 if err != nil { 31 return false, err 32 } 33 34 for _, n := range nodeList { 35 if n.UUID == node.UUID { 36 found = true 37 return true, nil 38 } 39 } 40 41 return false, nil 42 }) 43 th.AssertNoErr(t, err) 44 45 th.AssertEquals(t, found, true) 46 } 47 48 func TestNodesUpdate(t *testing.T) { 49 clients.RequireLong(t) 50 51 client, err := clients.NewBareMetalV1Client() 52 th.AssertNoErr(t, err) 53 client.Microversion = "1.38" 54 55 node, err := CreateNode(t, client) 56 th.AssertNoErr(t, err) 57 defer DeleteNode(t, client, node) 58 59 updated, err := nodes.Update(client, node.UUID, nodes.UpdateOpts{ 60 nodes.UpdateOperation{ 61 Op: nodes.ReplaceOp, 62 Path: "/maintenance", 63 Value: "true", 64 }, 65 }).Extract() 66 th.AssertNoErr(t, err) 67 68 th.AssertEquals(t, updated.Maintenance, true) 69 } 70 71 func TestNodesMaintenance(t *testing.T) { 72 clients.RequireLong(t) 73 74 client, err := clients.NewBareMetalV1Client() 75 th.AssertNoErr(t, err) 76 client.Microversion = "1.38" 77 78 node, err := CreateNode(t, client) 79 th.AssertNoErr(t, err) 80 defer DeleteNode(t, client, node) 81 82 err = nodes.SetMaintenance(client, node.UUID, nodes.MaintenanceOpts{ 83 Reason: "I'm tired", 84 }).ExtractErr() 85 th.AssertNoErr(t, err) 86 87 updated, err := nodes.Get(client, node.UUID).Extract() 88 th.AssertNoErr(t, err) 89 90 th.AssertEquals(t, updated.Maintenance, true) 91 th.AssertEquals(t, updated.MaintenanceReason, "I'm tired") 92 93 err = nodes.UnsetMaintenance(client, node.UUID).ExtractErr() 94 th.AssertNoErr(t, err) 95 96 updated, err = nodes.Get(client, node.UUID).Extract() 97 th.AssertNoErr(t, err) 98 99 th.AssertEquals(t, updated.Maintenance, false) 100 th.AssertEquals(t, updated.MaintenanceReason, "") 101 } 102 103 func TestNodesRAIDConfig(t *testing.T) { 104 clients.SkipReleasesBelow(t, "stable/ussuri") 105 clients.RequireLong(t) 106 107 client, err := clients.NewBareMetalV1Client() 108 th.AssertNoErr(t, err) 109 client.Microversion = "1.50" 110 111 node, err := CreateNode(t, client) 112 th.AssertNoErr(t, err) 113 defer DeleteNode(t, client, node) 114 115 sizeGB := 100 116 isTrue := true 117 118 err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ 119 LogicalDisks: []nodes.LogicalDisk{ 120 { 121 SizeGB: &sizeGB, 122 IsRootVolume: &isTrue, 123 RAIDLevel: nodes.RAID5, 124 Controller: "software", 125 PhysicalDisks: []interface{}{ 126 map[string]string{ 127 "size": "> 100", 128 }, 129 map[string]string{ 130 "size": "> 100", 131 }, 132 }, 133 }, 134 }, 135 }).ExtractErr() 136 th.AssertNoErr(t, err) 137 138 err = nodes.SetRAIDConfig(client, node.UUID, nodes.RAIDConfigOpts{ 139 LogicalDisks: []nodes.LogicalDisk{ 140 { 141 SizeGB: &sizeGB, 142 IsRootVolume: &isTrue, 143 RAIDLevel: nodes.RAID5, 144 DiskType: nodes.HDD, 145 NumberOfPhysicalDisks: 5, 146 }, 147 }, 148 }).ExtractErr() 149 th.AssertNoErr(t, err) 150 }