mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-21 01:59:07 +00:00
Merge pull request #1319 from justincormack/gcp-delimage
GCP image handling enhancements
This commit is contained in:
commit
c15f4f6b14
@ -29,7 +29,9 @@ type Moby struct {
|
||||
Format string
|
||||
Project string
|
||||
Bucket string
|
||||
Family string
|
||||
Public bool
|
||||
Replace bool
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -42,3 +42,5 @@ outputs:
|
||||
- format: gce
|
||||
project: moby
|
||||
bucket: mobytestjustin
|
||||
family: moby-dev
|
||||
replace: true
|
||||
|
26
gcp.go
26
gcp.go
@ -34,7 +34,8 @@ func uploadGS(filename, project, bucket string, public bool) error {
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
wc := client.Bucket(bucket).Object(filename).NewWriter(ctx)
|
||||
obj := client.Bucket(bucket).Object(filename)
|
||||
wc := obj.NewWriter(ctx)
|
||||
_, err = io.Copy(wc, f)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -44,14 +45,19 @@ func uploadGS(filename, project, bucket string, public bool) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO make public if requested
|
||||
if public {
|
||||
err = obj.ACL().Set(ctx, storage.AllUsers, storage.RoleReader)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("gs://" + bucket + "/" + filename)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func imageGS(filename, project, storage string) error {
|
||||
func imageGS(filename, project, storage, family string, replace bool) error {
|
||||
if project != "" {
|
||||
err := os.Setenv("GOOGLE_CLOUD_PROJECT", project)
|
||||
if err != nil {
|
||||
@ -68,7 +74,19 @@ func imageGS(filename, project, storage string) error {
|
||||
if err != nil {
|
||||
return errors.New("Please install the gcloud binary")
|
||||
}
|
||||
args := []string{"compute", "images", "create", "--source-uri", storage, filename}
|
||||
|
||||
if replace {
|
||||
args := []string{"compute", "images", "delete", filename}
|
||||
cmd := exec.Command(gcloud, args...)
|
||||
// ignore failures; it may not exist
|
||||
_ = cmd.Run()
|
||||
}
|
||||
|
||||
args := []string{"compute", "images", "create", "--source-uri", storage}
|
||||
if family != "" {
|
||||
args = append(args, "--family", family)
|
||||
}
|
||||
args = append(args, filename)
|
||||
cmd := exec.Command(gcloud, args...)
|
||||
|
||||
out, err := cmd.CombinedOutput()
|
||||
|
@ -63,7 +63,7 @@ func outputs(m *Moby, base string, bzimage []byte, initrd []byte) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error copying to Google Storage: %v", err)
|
||||
}
|
||||
err = imageGS(base, o.Project, "https://storage.googleapis.com/"+o.Bucket+"/"+base+".img.tar.gz")
|
||||
err = imageGS(base, o.Project, "https://storage.googleapis.com/"+o.Bucket+"/"+base+".img.tar.gz", o.Family, o.Replace)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error creating Google Compute Image: %v", err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user