github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/css/v1/clusters_test.go (about)

     1  package v1
     2  
     3  import (
     4  	"log"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/clusters"
    11  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    12  )
    13  
    14  const timeout = 1200
    15  
    16  func TestClusterWorkflow(t *testing.T) {
    17  	client, err := clients.NewCssV1Client()
    18  	th.AssertNoErr(t, err)
    19  
    20  	vpcID := clients.EnvOS.GetEnv("VPC_ID")
    21  	subnetID := clients.EnvOS.GetEnv("NETWORK_ID")
    22  
    23  	if vpcID == "" || subnetID == "" {
    24  		t.Skip("Both `VPC_ID` and `NETWORK_ID` need to be defined")
    25  	}
    26  
    27  	sgID := openstack.DefaultSecurityGroup(t)
    28  
    29  	opts := clusters.CreateOpts{
    30  		Name: tools.RandomString("css-cluster-", 4),
    31  		Instance: &clusters.InstanceSpec{
    32  			Flavor: "css.medium.8",
    33  
    34  			Volume: &clusters.Volume{
    35  				Type: "COMMON",
    36  				Size: 40,
    37  			},
    38  			Nics: &clusters.Nics{
    39  				VpcID:           vpcID,
    40  				SubnetID:        subnetID,
    41  				SecurityGroupID: sgID,
    42  			},
    43  			AvailabilityZone: "eu-de-02",
    44  		},
    45  		InstanceNum: 1,
    46  		DiskEncryption: &clusters.DiskEncryption{
    47  			Encrypted: "0",
    48  		},
    49  		Datastore: &clusters.Datastore{
    50  			Version: "7.6.2",
    51  			Type:    "elasticsearch",
    52  		},
    53  	}
    54  	created, err := clusters.Create(client, opts)
    55  	th.AssertNoErr(t, err)
    56  
    57  	defer func() {
    58  		err = clusters.Delete(client, created.ID)
    59  		th.AssertNoErr(t, err)
    60  	}()
    61  
    62  	got, err := clusters.Get(client, created.ID)
    63  	th.AssertNoErr(t, err)
    64  
    65  	log.Printf("Creating cluster, ID: %s", got.ID)
    66  	th.AssertEquals(t, created.ID, got.ID)
    67  	th.AssertEquals(t, created.Name, got.Name)
    68  
    69  	th.CheckNoErr(t, clusters.WaitForClusterOperationSucces(client, created.ID, timeout))
    70  
    71  	list, err := clusters.List(client)
    72  	th.AssertNoErr(t, err)
    73  
    74  	found := false
    75  	for _, one := range list {
    76  		if one.ID == created.ID {
    77  			found = true
    78  			break
    79  		}
    80  	}
    81  	if !found {
    82  		t.Errorf("cluster %s is not found in list", created.ID)
    83  	}
    84  
    85  	_, err = clusters.ExtendCluster(client, created.ID, []clusters.ClusterExtendSpecialOpts{
    86  		{
    87  			Type:     "ess",
    88  			NodeSize: 0,
    89  			DiskSize: 160,
    90  		},
    91  	})
    92  	th.AssertNoErr(t, err)
    93  
    94  	th.AssertNoErr(t, clusters.WaitForClusterToExtend(client, created.ID, timeout))
    95  
    96  	_, err = clusters.ExtendCluster(client, created.ID, clusters.ClusterExtendCommonOpts{
    97  		ModifySize: 1,
    98  	})
    99  	th.AssertNoErr(t, err)
   100  
   101  	th.AssertNoErr(t, clusters.WaitForClusterToExtend(client, created.ID, timeout))
   102  }