in cli_tools/gce_onestep_image_import/onestep_importer/aws_importer.go [347:388]
func (importer *awsImporter) monitorAWSExportImageTask(taskID string) error {
if importer.monitorAWSExportImageTaskFn != nil {
return importer.monitorAWSExportImageTaskFn()
}
describeExportInput := &ec2.DescribeExportImageTasksInput{
ExportImageTaskIds: []*string{aws.String(taskID)},
}
var taskStatus, taskStatusMessage, taskProgress string
for {
output, err := importer.ec2Client.DescribeExportImageTasks(describeExportInput)
if err != nil {
return daisy.Errf("failed to get export task status: %v", err)
}
if len(output.ExportImageTasks) != 1 {
return daisy.Errf("failed to get export task status: unexpected response")
}
taskStatus, taskStatusMessage, taskProgress = getExportImageTask(output.ExportImageTasks[0])
if taskStatus != "active" {
if taskStatus != "completed" {
return daisy.Errf("AWS export task wasn't completed successfully")
}
log.Println("AWS export task is completed!")
break
}
log.Printf("AWS export task status: %v, status message: %v, "+
"progress: %v.\n", taskStatus, taskStatusMessage, taskProgress)
select {
case <-importer.timeoutChan:
return daisy.Errf("timeout exceeded during image export")
default:
// Did not timeout, continue to check task status.
}
time.Sleep(time.Second * 10)
}
return nil
}