コード例 #1
0
func downloadAndUploadStemcell(boshClient bosh.Client, stemcell string) error {
	file, size, err := download(stemcell)
	if err != nil {
		return err
	}

	_, err = boshClient.UploadStemcell(bosh.NewSizeReader(file, size))
	return err
}
コード例 #2
0
func downloadAndUploadRelease(boshClient bosh.Client, release string) error {
	file, size, err := download(release)
	if err != nil {
		return err
	}

	_, err = boshClient.UploadRelease(bosh.NewSizeReader(file, size))
	return err
}
コード例 #3
0
func DownloadLatestConsulRelease(client bosh.Client) (string, error) {
	resp, err := http.Get("http://bosh.io/api/v1/releases/github.com/cloudfoundry-incubator/consul-release")
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()

	releases := []release{}
	json.NewDecoder(resp.Body).Decode(&releases)

	if len(releases) < 1 {
		return "", errors.New("no releases")
	}

	dir, err := ioutil.TempDir("", "")
	if err != nil {
		return "", err
	}

	out, err := os.Create(filepath.Join(dir, "consul-release.tgz"))
	if err != nil {
		return "", err
	}
	defer out.Close()

	resp, err = http.Get(releases[0].URL)
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()

	_, err = io.Copy(out, resp.Body)
	if err != nil {
		return "", err
	}

	_, err = out.Seek(0, 0)
	if err != nil {
		return "", err
	}

	info, err := out.Stat()
	if err != nil {
		return "", err
	}

	_, err = client.UploadRelease(bosh.NewSizeReader(out, info.Size()))
	if err != nil {
		return "", err
	}

	return releases[0].Version, nil
}