github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/cce/v3/nodepool_test.go (about)

     1  package v3
     2  
     3  import (
     4  	"time"
     5  
     6  	golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack/cce"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/cce/v3/nodepools"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/cce/v3/nodes"
    11  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    12  )
    13  
    14  func (s *testNodes) TestNodePoolLifecycle() {
    15  	t := s.T()
    16  	client, err := clients.NewCceV3Client()
    17  	th.AssertNoErr(t, err)
    18  
    19  	clusterId := s.clusterID
    20  
    21  	kp := cce.CreateKeypair(t)
    22  	defer cce.DeleteKeypair(t, kp)
    23  
    24  	createOpts := nodepools.CreateOpts{
    25  		Kind:       "NodePool",
    26  		ApiVersion: "v3",
    27  		Metadata: nodepools.CreateMetaData{
    28  			Name: "nodepool-test",
    29  		},
    30  		Spec: nodepools.CreateSpec{
    31  			Type: "vm",
    32  			NodeTemplate: nodes.Spec{
    33  				Flavor: "s2.large.2",
    34  				Az:     "eu-de-01",
    35  				Os:     "EulerOS 2.5",
    36  				Login: nodes.LoginSpec{
    37  					SshKey: kp,
    38  				},
    39  				RootVolume: nodes.VolumeSpec{
    40  					Size:       40,
    41  					VolumeType: "SSD",
    42  				},
    43  				DataVolumes: []nodes.VolumeSpec{
    44  					{
    45  						Size:       100,
    46  						VolumeType: "SSD",
    47  						ExtendParam: map[string]interface{}{
    48  							"useType": "docker",
    49  						},
    50  					},
    51  					{
    52  						Size:       100,
    53  						VolumeType: "SSD",
    54  					},
    55  				},
    56  				Count: 1,
    57  			},
    58  			InitialNodeCount: 1,
    59  		},
    60  	}
    61  
    62  	nodePool, err := nodepools.Create(client, clusterId, createOpts).Extract()
    63  	th.AssertNoErr(t, err)
    64  
    65  	nodeId := nodePool.Metadata.Id
    66  
    67  	th.AssertNoErr(t, golangsdk.WaitFor(1800, func() (bool, error) {
    68  		n, err := nodepools.Get(client, clusterId, nodeId).Extract()
    69  		if err != nil {
    70  			return false, err
    71  		}
    72  		if n.Status.Phase == "" {
    73  			return true, nil
    74  		}
    75  		time.Sleep(10 * time.Second)
    76  		return false, nil
    77  	}))
    78  
    79  	_, err = nodepools.Get(client, clusterId, nodeId).Extract()
    80  	th.AssertNoErr(t, err)
    81  
    82  	th.AssertNoErr(t, nodepools.Delete(client, clusterId, nodeId).ExtractErr())
    83  
    84  	err = golangsdk.WaitFor(1800, func() (bool, error) {
    85  		_, err := nodepools.Get(client, clusterId, nodeId).Extract()
    86  		if err != nil {
    87  			if _, ok := err.(golangsdk.ErrDefault404); ok {
    88  				return true, nil
    89  			}
    90  			return false, err
    91  		}
    92  		return false, nil
    93  	})
    94  	th.AssertNoErr(t, err)
    95  }