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  }