github.com/gophercloud/gophercloud@v1.11.0/openstack/clustering/v1/nodes/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/gophercloud/gophercloud/openstack/clustering/v1/nodes"
     8  	"github.com/gophercloud/gophercloud/pagination"
     9  	th "github.com/gophercloud/gophercloud/testhelper"
    10  	fake "github.com/gophercloud/gophercloud/testhelper/client"
    11  )
    12  
    13  func TestCreateNode(t *testing.T) {
    14  	th.SetupHTTP()
    15  	defer th.TeardownHTTP()
    16  
    17  	HandleCreateSuccessfully(t)
    18  
    19  	createOpts := nodes.CreateOpts{
    20  		ClusterID: "e395be1e-8d8e-43bb-bd6c-943eccf76a6d",
    21  		Metadata: map[string]interface{}{
    22  			"foo": "bar",
    23  			"test": map[string]interface{}{
    24  				"nil_interface": interface{}(nil),
    25  				"float_value":   float64(123.3),
    26  				"string_value":  "test_string",
    27  				"bool_value":    false,
    28  			},
    29  		},
    30  		Name:      "node-e395be1e-002",
    31  		ProfileID: "d8a48377-f6a3-4af4-bbbb-6e8bcaa0cbc0",
    32  		Role:      "",
    33  	}
    34  
    35  	res := nodes.Create(fake.ServiceClient(), createOpts)
    36  	th.AssertNoErr(t, res.Err)
    37  
    38  	requestID := res.Header.Get("X-Openstack-Request-Id")
    39  	th.AssertEquals(t, "req-3791a089-9d46-4671-a3f9-55e95e55d2b4", requestID)
    40  
    41  	location := res.Header.Get("Location")
    42  	th.AssertEquals(t, "http://senlin.cloud.blizzard.net:8778/v1/actions/ffd94dd8-6266-4887-9a8c-5b78b72136da", location)
    43  
    44  	locationFields := strings.Split(location, "actions/")
    45  	actionID := locationFields[1]
    46  	th.AssertEquals(t, "ffd94dd8-6266-4887-9a8c-5b78b72136da", actionID)
    47  
    48  	actual, err := res.Extract()
    49  	th.AssertNoErr(t, err)
    50  	th.AssertDeepEquals(t, ExpectedCreate, *actual)
    51  }
    52  
    53  func TestListNodes(t *testing.T) {
    54  	th.SetupHTTP()
    55  	defer th.TeardownHTTP()
    56  
    57  	HandleListSuccessfully(t)
    58  
    59  	count := 0
    60  	err := nodes.List(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
    61  		actual, err := nodes.ExtractNodes(page)
    62  		th.AssertNoErr(t, err)
    63  		th.AssertDeepEquals(t, ExpectedList, actual)
    64  		count++
    65  		return true, nil
    66  	})
    67  
    68  	th.AssertNoErr(t, err)
    69  	th.AssertEquals(t, count, 1)
    70  }
    71  
    72  func TestDeleteNode(t *testing.T) {
    73  	th.SetupHTTP()
    74  	defer th.TeardownHTTP()
    75  
    76  	HandleDeleteSuccessfully(t)
    77  
    78  	deleteResult := nodes.Delete(fake.ServiceClient(), "6dc6d336e3fc4c0a951b5698cd1236ee")
    79  	th.AssertNoErr(t, deleteResult.ExtractErr())
    80  }
    81  
    82  func TestGetNode(t *testing.T) {
    83  	th.SetupHTTP()
    84  	defer th.TeardownHTTP()
    85  
    86  	HandleGetSuccessfully(t)
    87  
    88  	actual, err := nodes.Get(fake.ServiceClient(), "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3").Extract()
    89  	th.AssertNoErr(t, err)
    90  	th.AssertDeepEquals(t, ExpectedGet, *actual)
    91  }
    92  
    93  func TestUpdateNode(t *testing.T) {
    94  	th.SetupHTTP()
    95  	defer th.TeardownHTTP()
    96  
    97  	HandleUpdateSuccessfully(t)
    98  
    99  	nodeOpts := nodes.UpdateOpts{
   100  		Name: "node-e395be1e-002",
   101  	}
   102  	actual, err := nodes.Update(fake.ServiceClient(), ExpectedUpdate.ID, nodeOpts).Extract()
   103  	th.AssertNoErr(t, err)
   104  	th.AssertDeepEquals(t, ExpectedUpdate, *actual)
   105  }
   106  
   107  func TestOpsNode(t *testing.T) {
   108  	th.SetupHTTP()
   109  	defer th.TeardownHTTP()
   110  
   111  	HandleOpsSuccessfully(t)
   112  
   113  	nodeOpts := nodes.OperationOpts{
   114  		Operation: nodes.PauseOperation,
   115  	}
   116  	actual, err := nodes.Ops(fake.ServiceClient(), "7d85f602-a948-4a30-afd4-e84f47471c15", nodeOpts).Extract()
   117  	th.AssertNoErr(t, err)
   118  	th.AssertDeepEquals(t, OperationExpectedActionID, actual)
   119  }
   120  
   121  func TestNodeRecover(t *testing.T) {
   122  	th.SetupHTTP()
   123  	defer th.TeardownHTTP()
   124  
   125  	HandleRecoverSuccessfully(t)
   126  	recoverOpts := nodes.RecoverOpts{
   127  		Operation: nodes.RebuildRecovery,
   128  		Check:     new(bool),
   129  	}
   130  	actionID, err := nodes.Recover(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09", recoverOpts).Extract()
   131  	th.AssertNoErr(t, err)
   132  	th.AssertEquals(t, ExpectedActionID, actionID)
   133  }
   134  
   135  func TestNodeCheck(t *testing.T) {
   136  	th.SetupHTTP()
   137  	defer th.TeardownHTTP()
   138  
   139  	HandleCheckSuccessfully(t)
   140  
   141  	actionID, err := nodes.Check(fake.ServiceClient(), "edce3528-864f-41fb-8759-f4707925cc09").Extract()
   142  	th.AssertNoErr(t, err)
   143  	th.AssertEquals(t, ExpectedActionID, actionID)
   144  }