コード例 #1
0
// submitStatusRequest checks the service to validate that the deploy request completed successfully.
func (d *DeployWorker) submitStatusRequest(cl *coscl.Client, deployID string) string {
	var stat cosddb.DeployStatus

	// Check status every maxPollStatusPause seconds, maxPollStatusCount times.
	for a := 0; a <= maxPollStatusCount; a++ {
		time.Sleep(time.Second * maxPollStatusPause)
		resp, err := cl.Execute()
		if err != nil {
			return fmt.Sprintf("Could not submit status request for deployID %s", deployID, err.Error())
		}
		err = json.Unmarshal([]byte(resp), &stat)
		if err != nil {
			return fmt.Sprintf("Could not parse status response for deployID %s: %s", deployID, err.Error())
		}
		if stat.Status == cosddb.Started {
			continue
		}
		break
	}
	switch stat.Status {
	case cosddb.Started:
		return fmt.Sprintf("Deploy still running after polling period expired for deployID %s", deployID)
	case cosddb.Failed:
		return fmt.Sprintf("Deploy Failed for deployID %s", deployID)
	default:
	}
	return ""
}
コード例 #2
0
// submitDeployRequest returns a unique deploy id after submitting a request via the client library to
// the coreos-deploy service in the cluster.
func (d *DeployWorker) submitDeployRequest(cl *coscl.Client) (string, string) {
	resp, err := cl.Execute()
	if err != nil {
		return "", fmt.Sprintf("Could not submit deploy request: %s", err.Error())
	}

	result := struct {
		DeployID string `json:"deployID"` // The UUID of the deploy.
	}{}
	err = json.Unmarshal([]byte(resp), &result)
	if err != nil {
		return "", fmt.Sprintf("Cannot parse returned deploy id: %s", err.Error())
	}
	return result.DeployID, ""
}