github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/compute/v2/servers_test.go (about) 1 package v2 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/opentelekomcloud/gophertelekomcloud" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 9 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack" 10 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 11 "github.com/opentelekomcloud/gophertelekomcloud/openstack/compute/v2/flavors" 12 "github.com/opentelekomcloud/gophertelekomcloud/openstack/compute/v2/servers" 13 "github.com/opentelekomcloud/gophertelekomcloud/openstack/ims/v2/images" 14 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 15 ) 16 17 func TestServerList(t *testing.T) { 18 client, err := clients.NewComputeV2Client() 19 th.AssertNoErr(t, err) 20 21 listOpts := servers.ListOpts{} 22 allServerPages, err := servers.List(client, listOpts).AllPages() 23 th.AssertNoErr(t, err) 24 25 serversList, err := servers.ExtractServers(allServerPages) 26 th.AssertNoErr(t, err) 27 28 for _, server := range serversList { 29 tools.PrintResource(t, server) 30 } 31 } 32 33 func TestServerLifecycle(t *testing.T) { 34 client, err := clients.NewComputeV2Client() 35 th.AssertNoErr(t, err) 36 37 t.Logf("Attempting to create ECSv2") 38 ecsName := tools.RandomString("create-ecs-", 3) 39 40 az := clients.EnvOS.GetEnv("AVAILABILITY_ZONE") 41 if az == "" { 42 az = "eu-de-01" 43 } 44 45 networkID := clients.EnvOS.GetEnv("NETWORK_ID") 46 if networkID == "" { 47 t.Skip("OS_NETWORK_ID env var is missing but ECS test requires using existing network") 48 } 49 50 imageV2Client, err := clients.NewIMSV2Client() 51 th.AssertNoErr(t, err) 52 53 image, err := images.ListImages(imageV2Client, images.ListImagesOpts{ 54 Name: "Standard_Debian_10_latest", 55 }) 56 th.AssertNoErr(t, err) 57 58 flavorID, err := flavors.IDFromName(client, "s2.large.2") 59 th.AssertNoErr(t, err) 60 61 createOpts := servers.CreateOpts{ 62 Name: ecsName, 63 ImageRef: image[0].Id, 64 FlavorRef: flavorID, 65 SecurityGroups: []string{ 66 openstack.DefaultSecurityGroup(t), 67 }, 68 AvailabilityZone: az, 69 Networks: []servers.Network{ 70 { 71 UUID: networkID, 72 }, 73 }, 74 } 75 76 ecs, err := servers.Create(client, createOpts).Extract() 77 th.AssertNoErr(t, err) 78 79 err = servers.WaitForStatus(client, ecs.ID, "ACTIVE", 1200) 80 th.AssertNoErr(t, err) 81 t.Logf("Created ECSv2: %s", ecs.ID) 82 83 ecs, err = servers.Get(client, ecs.ID).Extract() 84 th.AssertNoErr(t, err) 85 th.AssertEquals(t, ecsName, ecs.Name) 86 87 nicInfo, err := servers.GetNICs(client, ecs.ID).Extract() 88 th.AssertNoErr(t, err) 89 tools.PrintResource(t, nicInfo) 90 91 defer func() { 92 t.Logf("Attempting to delete ECSv2: %s", ecs.ID) 93 94 _, err := servers.Delete(client, ecs.ID).ExtractJobResponse() 95 th.AssertNoErr(t, err) 96 97 err = golangsdk.WaitFor(1200, func() (bool, error) { 98 _, err := servers.Get(client, ecs.ID).Extract() 99 if err != nil { 100 if _, ok := err.(golangsdk.ErrDefault400); ok { 101 time.Sleep(10 * time.Second) 102 return false, nil 103 } 104 return false, err 105 } 106 return true, nil 107 }) 108 th.AssertNoErr(t, err) 109 110 t.Logf("ECSv2 instance deleted: %s", ecs.ID) 111 }() 112 113 t.Logf("Attempting to update ECSv2: %s", ecs.ID) 114 115 ecsName = tools.RandomString("update-ecs-", 3) 116 updateOpts := servers.UpdateOpts{ 117 Name: ecsName, 118 } 119 120 _, err = servers.Update(client, ecs.ID, updateOpts).Extract() 121 th.AssertNoErr(t, err) 122 123 t.Logf("ECSv2 successfully updated: %s", ecs.ID) 124 th.AssertNoErr(t, err) 125 126 newECS, err := servers.Get(client, ecs.ID).Extract() 127 th.AssertNoErr(t, err) 128 th.AssertEquals(t, ecsName, newECS.Name) 129 }