From d33274ce649f63cc2b2c1884bcd84e7a5a70917e Mon Sep 17 00:00:00 2001 From: David Zhu Date: Thu, 31 Aug 2017 17:20:54 -0700 Subject: [PATCH] Updated pd.go tests to use GCE API instead of GCloud Commands --- .../providers/gce/gce_instances.go | 18 ++++++++++++++++++ test/e2e/storage/pd.go | 13 +++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/gce_instances.go b/pkg/cloudprovider/providers/gce/gce_instances.go index c6e31dee61e..0d551a29dd0 100644 --- a/pkg/cloudprovider/providers/gce/gce_instances.go +++ b/pkg/cloudprovider/providers/gce/gce_instances.go @@ -294,6 +294,24 @@ func (gce *GCECloud) GetAllZones() (sets.String, error) { return zones, nil } +// ListInstanceNames returns a string of instance names seperated by spaces. +func (gce *GCECloud) ListInstanceNames(project, zone string) (string, error) { + res, err := gce.service.Instances.List(project, zone).Fields("items(name)").Do() + if err != nil { + return "", err + } + var output string + for _, item := range res.Items { + output += item.Name + " " + } + return output, nil +} + +// DeleteInstance deletes an instance specified by project, zone, and name +func (gce *GCECloud) DeleteInstance(project, zone, name string) (*compute.Operation, error) { + return gce.service.Instances.Delete(project, zone, name).Do() +} + // Implementation of Instances.CurrentNodeName func (gce *GCECloud) CurrentNodeName(hostname string) (types.NodeName, error) { return types.NodeName(hostname), nil diff --git a/test/e2e/storage/pd.go b/test/e2e/storage/pd.go index 53961b1ca35..c14d7f701a9 100644 --- a/test/e2e/storage/pd.go +++ b/test/e2e/storage/pd.go @@ -19,7 +19,6 @@ package storage import ( "fmt" mathrand "math/rand" - "os/exec" "strings" "time" @@ -449,16 +448,18 @@ var _ = SIGDescribe("Pod Disks", func() { // Verify that disk shows up in node 0's volumeInUse list framework.ExpectNoError(waitForPDInVolumesInUse(nodeClient, diskName, host0Name, nodeStatusTimeout, true /* should exist*/)) - output, err := exec.Command("gcloud", "compute", "instances", "list", "--project="+framework.TestContext.CloudConfig.ProjectID).CombinedOutput() + gceCloud, err := framework.GetGCECloud() + framework.ExpectNoError(err, fmt.Sprintf("Unable to create gcloud client err=%v", err)) + + output, err := gceCloud.ListInstanceNames(framework.TestContext.CloudConfig.ProjectID, framework.TestContext.CloudConfig.Zone) framework.ExpectNoError(err, fmt.Sprintf("Unable to get list of node instances err=%v output=%s", err, output)) Expect(true, strings.Contains(string(output), string(host0Name))) By("deleting host0") + resp, err := gceCloud.DeleteInstance(framework.TestContext.CloudConfig.ProjectID, framework.TestContext.CloudConfig.Zone, string(host0Name)) + framework.ExpectNoError(err, fmt.Sprintf("Failed to delete host0pod: err=%v response=%#v", err, resp)) - output, err = exec.Command("gcloud", "compute", "instances", "delete", string(host0Name), "--project="+framework.TestContext.CloudConfig.ProjectID, "--zone="+framework.TestContext.CloudConfig.Zone).CombinedOutput() - framework.ExpectNoError(err, fmt.Sprintf("Failed to delete host0pod: err=%v output=%s", err, output)) - - output, err = exec.Command("gcloud", "compute", "instances", "list", "--project="+framework.TestContext.CloudConfig.ProjectID).CombinedOutput() + output, err = gceCloud.ListInstanceNames(framework.TestContext.CloudConfig.ProjectID, framework.TestContext.CloudConfig.Zone) framework.ExpectNoError(err, fmt.Sprintf("Unable to get list of node instances err=%v output=%s", err, output)) Expect(false, strings.Contains(string(output), string(host0Name)))