github.com/gophercloud/gophercloud@v1.11.0/openstack/containerinfra/v1/clusters/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gophercloud/gophercloud"
     7  	"github.com/gophercloud/gophercloud/openstack/containerinfra/v1/clusters"
     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 TestCreateCluster(t *testing.T) {
    14  	th.SetupHTTP()
    15  	defer th.TeardownHTTP()
    16  
    17  	HandleCreateClusterSuccessfully(t)
    18  
    19  	masterCount := 1
    20  	nodeCount := 1
    21  	createTimeout := 30
    22  	masterLBEnabled := true
    23  	opts := clusters.CreateOpts{
    24  		ClusterTemplateID: "0562d357-8641-4759-8fed-8173f02c9633",
    25  		CreateTimeout:     &createTimeout,
    26  		DiscoveryURL:      "",
    27  		FlavorID:          "m1.small",
    28  		Keypair:           "my_keypair",
    29  		Labels:            map[string]string{},
    30  		MasterCount:       &masterCount,
    31  		MasterFlavorID:    "m1.small",
    32  		MasterLBEnabled:   &masterLBEnabled,
    33  		Name:              "k8s",
    34  		NodeCount:         &nodeCount,
    35  		FloatingIPEnabled: gophercloud.Enabled,
    36  		FixedNetwork:      "private_network",
    37  		FixedSubnet:       "private_subnet",
    38  		MergeLabels:       gophercloud.Enabled,
    39  	}
    40  
    41  	sc := fake.ServiceClient()
    42  	sc.Endpoint = sc.Endpoint + "v1/"
    43  	res := clusters.Create(sc, opts)
    44  	th.AssertNoErr(t, res.Err)
    45  
    46  	requestID := res.Header.Get("X-OpenStack-Request-Id")
    47  	th.AssertEquals(t, requestUUID, requestID)
    48  
    49  	actual, err := res.Extract()
    50  	th.AssertNoErr(t, err)
    51  
    52  	th.AssertDeepEquals(t, clusterUUID, actual)
    53  }
    54  
    55  func TestGetCluster(t *testing.T) {
    56  	th.SetupHTTP()
    57  	defer th.TeardownHTTP()
    58  
    59  	HandleGetClusterSuccessfully(t)
    60  
    61  	sc := fake.ServiceClient()
    62  	sc.Endpoint = sc.Endpoint + "v1/"
    63  	actual, err := clusters.Get(sc, "746e779a-751a-456b-a3e9-c883d734946f").Extract()
    64  	th.AssertNoErr(t, err)
    65  	actual.CreatedAt = actual.CreatedAt.UTC()
    66  	actual.UpdatedAt = actual.UpdatedAt.UTC()
    67  	th.AssertDeepEquals(t, ExpectedCluster, *actual)
    68  }
    69  
    70  func TestListClusters(t *testing.T) {
    71  	th.SetupHTTP()
    72  	defer th.TeardownHTTP()
    73  
    74  	HandleListClusterSuccessfully(t)
    75  
    76  	count := 0
    77  	sc := fake.ServiceClient()
    78  	sc.Endpoint = sc.Endpoint + "v1/"
    79  	clusters.List(sc, clusters.ListOpts{Limit: 2}).EachPage(func(page pagination.Page) (bool, error) {
    80  		count++
    81  		actual, err := clusters.ExtractClusters(page)
    82  		th.AssertNoErr(t, err)
    83  		for idx := range actual {
    84  			actual[idx].CreatedAt = actual[idx].CreatedAt.UTC()
    85  			actual[idx].UpdatedAt = actual[idx].UpdatedAt.UTC()
    86  		}
    87  		th.AssertDeepEquals(t, ExpectedClusters, actual)
    88  
    89  		return true, nil
    90  	})
    91  
    92  	if count != 1 {
    93  		t.Errorf("Expected 1 page, got %d", count)
    94  	}
    95  }
    96  
    97  func TestListDetailClusters(t *testing.T) {
    98  	th.SetupHTTP()
    99  	defer th.TeardownHTTP()
   100  
   101  	HandleListDetailClusterSuccessfully(t)
   102  
   103  	count := 0
   104  	sc := fake.ServiceClient()
   105  	sc.Endpoint = sc.Endpoint + "v1/"
   106  	clusters.ListDetail(sc, clusters.ListOpts{Limit: 2}).EachPage(func(page pagination.Page) (bool, error) {
   107  		count++
   108  		actual, err := clusters.ExtractClusters(page)
   109  		th.AssertNoErr(t, err)
   110  		for idx := range actual {
   111  			actual[idx].CreatedAt = actual[idx].CreatedAt.UTC()
   112  			actual[idx].UpdatedAt = actual[idx].UpdatedAt.UTC()
   113  		}
   114  		th.AssertDeepEquals(t, ExpectedClusters, actual)
   115  
   116  		return true, nil
   117  	})
   118  
   119  	if count != 1 {
   120  		t.Errorf("Expected 1 page, got %d", count)
   121  	}
   122  }
   123  
   124  func TestUpdateCluster(t *testing.T) {
   125  	th.SetupHTTP()
   126  	defer th.TeardownHTTP()
   127  
   128  	HandleUpdateClusterSuccessfully(t)
   129  
   130  	updateOpts := []clusters.UpdateOptsBuilder{
   131  		clusters.UpdateOpts{
   132  			Op:    clusters.ReplaceOp,
   133  			Path:  "/master_lb_enabled",
   134  			Value: "True",
   135  		},
   136  		clusters.UpdateOpts{
   137  			Op:    clusters.ReplaceOp,
   138  			Path:  "/registry_enabled",
   139  			Value: "True",
   140  		},
   141  	}
   142  
   143  	sc := fake.ServiceClient()
   144  	sc.Endpoint = sc.Endpoint + "v1/"
   145  	res := clusters.Update(sc, clusterUUID, updateOpts)
   146  	th.AssertNoErr(t, res.Err)
   147  
   148  	requestID := res.Header.Get("X-OpenStack-Request-Id")
   149  	th.AssertEquals(t, requestUUID, requestID)
   150  
   151  	actual, err := res.Extract()
   152  	th.AssertNoErr(t, err)
   153  
   154  	th.AssertDeepEquals(t, clusterUUID, actual)
   155  }
   156  
   157  func TestUpgradeCluster(t *testing.T) {
   158  	th.SetupHTTP()
   159  	defer th.TeardownHTTP()
   160  
   161  	HandleUpgradeClusterSuccessfully(t)
   162  
   163  	var opts clusters.UpgradeOptsBuilder
   164  	opts = clusters.UpgradeOpts{
   165  		ClusterTemplate: "0562d357-8641-4759-8fed-8173f02c9633",
   166  	}
   167  
   168  	sc := fake.ServiceClient()
   169  	sc.Endpoint = sc.Endpoint + "v1/"
   170  	res := clusters.Upgrade(sc, clusterUUID, opts)
   171  	th.AssertNoErr(t, res.Err)
   172  
   173  	requestID := res.Header.Get("X-OpenStack-Request-Id")
   174  	th.AssertEquals(t, requestUUID, requestID)
   175  
   176  	actual, err := res.Extract()
   177  	th.AssertNoErr(t, err)
   178  
   179  	th.AssertDeepEquals(t, clusterUUID, actual)
   180  }
   181  
   182  func TestDeleteCluster(t *testing.T) {
   183  	th.SetupHTTP()
   184  	defer th.TeardownHTTP()
   185  
   186  	HandleDeleteClusterSuccessfully(t)
   187  
   188  	sc := fake.ServiceClient()
   189  	sc.Endpoint = sc.Endpoint + "v1/"
   190  	r := clusters.Delete(sc, clusterUUID)
   191  	err := r.ExtractErr()
   192  	th.AssertNoErr(t, err)
   193  
   194  	uuid := ""
   195  	idKey := "X-Openstack-Request-Id"
   196  	if len(r.Header[idKey]) > 0 {
   197  		uuid = r.Header[idKey][0]
   198  		if uuid == "" {
   199  			t.Errorf("No value for header [%s]", idKey)
   200  		}
   201  	} else {
   202  		t.Errorf("Missing header [%s]", idKey)
   203  	}
   204  
   205  	th.AssertEquals(t, requestUUID, uuid)
   206  }
   207  
   208  func TestResizeCluster(t *testing.T) {
   209  	th.SetupHTTP()
   210  	defer th.TeardownHTTP()
   211  
   212  	HandleResizeClusterSuccessfully(t)
   213  
   214  	nodeCount := 2
   215  
   216  	var opts clusters.ResizeOptsBuilder
   217  	opts = clusters.ResizeOpts{
   218  		NodeCount: &nodeCount,
   219  	}
   220  
   221  	sc := fake.ServiceClient()
   222  	sc.Endpoint = sc.Endpoint + "v1/"
   223  	res := clusters.Resize(sc, clusterUUID, opts)
   224  	th.AssertNoErr(t, res.Err)
   225  
   226  	requestID := res.Header.Get("X-OpenStack-Request-Id")
   227  	th.AssertEquals(t, requestUUID, requestID)
   228  
   229  	actual, err := res.Extract()
   230  	th.AssertNoErr(t, err)
   231  
   232  	th.AssertDeepEquals(t, clusterUUID, actual)
   233  }