github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/ims/common.go (about) 1 package ims 2 3 import ( 4 "io" 5 "net/http" 6 "os" 7 "strings" 8 "testing" 9 10 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 11 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 12 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 13 "github.com/opentelekomcloud/gophertelekomcloud/openstack/image/v2/images" 14 "github.com/opentelekomcloud/gophertelekomcloud/openstack/ims/v1/others" 15 "github.com/opentelekomcloud/gophertelekomcloud/openstack/obs" 16 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 17 ) 18 19 func getClient(t *testing.T) (*golangsdk.ServiceClient, *golangsdk.ServiceClient) { 20 v1, err := clients.NewIMSV1Client() 21 th.AssertNoErr(t, err) 22 23 v2, err := clients.NewIMSV2Client() 24 th.AssertNoErr(t, err) 25 26 return v1, v2 27 } 28 29 func downloadIMG(t *testing.T) (*os.File, error) { 30 img, err := os.CreateTemp("", "ims-rancher.img") 31 th.AssertNoErr(t, err) 32 t.Cleanup(func() { 33 err = img.Close() 34 th.AssertNoErr(t, err) 35 err = os.Remove(img.Name()) 36 th.AssertNoErr(t, err) 37 }) 38 39 resp, err := http.Get("https://releases.rancher.com/os/latest/rancheros-openstack.img") 40 th.AssertNoErr(t, err) 41 t.Cleanup(func() { 42 err = resp.Body.Close() 43 th.AssertNoErr(t, err) 44 }) 45 46 _, err = io.Copy(img, resp.Body) 47 th.AssertNoErr(t, err) 48 49 return img, err 50 } 51 52 func makeOBS(t *testing.T) (string, string) { 53 obsClient, bucketName := newBucket(t) 54 55 img, err := downloadIMG(t) 56 th.AssertNoErr(t, err) 57 58 objectName := tools.RandomString("ims-test-", 5) 59 60 _, err = obsClient.PutFile(&obs.PutFileInput{ 61 PutObjectBasicInput: obs.PutObjectBasicInput{ 62 ObjectOperationInput: obs.ObjectOperationInput{ 63 Bucket: bucketName, 64 Key: objectName, 65 }, 66 }, 67 SourceFile: img.Name(), 68 }) 69 t.Cleanup(func() { 70 _, err = obsClient.DeleteObject(&obs.DeleteObjectInput{ 71 Bucket: bucketName, 72 Key: objectName, 73 }) 74 th.AssertNoErr(t, err) 75 }) 76 th.AssertNoErr(t, err) 77 78 return bucketName, objectName 79 } 80 81 func newBucket(t *testing.T) (*obs.ObsClient, string) { 82 obsClient, err := clients.NewOBSClient() 83 th.AssertNoErr(t, err) 84 85 bucketName := strings.ToLower(tools.RandomString("ims-sdk-test", 5)) 86 87 _, err = obsClient.CreateBucket(&obs.CreateBucketInput{ 88 Bucket: bucketName, 89 }) 90 t.Cleanup(func() { 91 _, err = obsClient.DeleteBucket(bucketName) 92 th.AssertNoErr(t, err) 93 }) 94 th.AssertNoErr(t, err) 95 96 return obsClient, bucketName 97 } 98 99 func jobEntities(t *testing.T, client1 *golangsdk.ServiceClient, client2 *golangsdk.ServiceClient, jobId *string) *others.JobEntities { 100 err := others.WaitForJob(client1, *jobId, 1000) 101 th.AssertNoErr(t, err) 102 103 job, err := others.ShowJob(client1, *jobId) 104 th.AssertNoErr(t, err) 105 t.Cleanup(func() { 106 err = images.Delete(client2, images.DeleteImageOpts{ImageId: job.Entities.ImageId}) 107 th.AssertNoErr(t, err) 108 }) 109 110 return &job.Entities 111 }