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  }