From 0547cc3c3e054020628cd372f7cd687284ad537e Mon Sep 17 00:00:00 2001 From: jolestar Date: Wed, 12 Jul 2017 18:51:33 +0800 Subject: [PATCH] add job status constants, and CheckJobStatus func --- client/client.go | 13 ++++++++++++- client/util.go | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/client/client.go b/client/client.go index f4eb104..b825e63 100644 --- a/client/client.go +++ b/client/client.go @@ -36,8 +36,19 @@ const ( //LoadBalancerStatusCeased ceased LoadBalancerStatusCeased = "ceased" + //JobStatusUnknown unknown + JobStatusUnknown = "unknown" + //JobStatusSuccessful successful + JobStatusSuccessful = "successful" + //JobStatusFailed failed + JobStatusFailed = "failed" + //JobStatusPending pending + JobStatusPending = "pending" + //JobStatusWorking working + JobStatusWorking = "working" + defaultOpTimeout = 180 * time.Second - defaultWaitInterval = 5 * time.Second + defaultWaitInterval = 10 * time.Second ) // QingCloudClient QingCloud IaaS Advanced Client diff --git a/client/util.go b/client/util.go index 959df6a..494bbe3 100644 --- a/client/util.go +++ b/client/util.go @@ -40,6 +40,24 @@ func WaitJob(jobService *service.JobService, jobID string, timeout time.Duration }, timeout, waitInterval) } +// CheckJob wait the job with this jobID finish +func CheckJobStatus(jobService *service.JobService, jobID string) (string,error) { + input := &service.DescribeJobsInput{Jobs: []*string{&jobID}} + output, err := jobService.DescribeJobs(input) + if err != nil { + return JobStatusUnknown, nil + } + if len(output.JobSet) == 0 { + return "", fmt.Errorf("Can not find job [%s]", jobID) + } + j := output.JobSet[0] + if j.Status == nil { + logger.Error("Job [%s] status is nil ", jobID) + return JobStatusUnknown, nil + } + return *j.Status, nil +} + func describeInstance(instanceService *service.InstanceService, instanceID string) (*service.Instance, error) { input := &service.DescribeInstancesInput{Instances: []*string{&instanceID}} output, err := instanceService.DescribeInstances(input)