Skip to content

Commit 1adc808

Browse files
committed
Stop GCE instance rather than delete GCE instance
Since already defer function deletes GCE instance, this is for preventing double deletion.
1 parent b7011ea commit 1adc808

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

tools/baseimage/cmd/create_gce_x86_64_image/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ func createImageMain(project, zone string) error {
125125
if err := gce.WaitForInstance(project, zone, insName); err != nil {
126126
return fmt.Errorf("waiting for instance error: %v", err)
127127
}
128-
log.Printf("deleting instance %q...", insName)
129-
if err := h.DeleteInstance(insName); err != nil {
130-
return fmt.Errorf("error deleting instance: %v", err)
128+
log.Printf("stopping instance %q...", insName)
129+
if err := h.StopInstance(insName); err != nil {
130+
return fmt.Errorf("error stopping instance: %v", err)
131131
}
132132
if err := h.CreateImage(insName, attachedDiskName, outImageName); err != nil {
133133
return fmt.Errorf("failed to create image: %w", err)

tools/baseimage/pkg/gce/helper.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,14 @@ func (h *GceHelper) CreateInstance(name string) (*compute.Instance, error) {
122122
return payload, nil
123123
}
124124

125+
func (h *GceHelper) StopInstance(name string) error {
126+
op, err := h.Service.Instances.Stop(h.Project, h.Zone, name).Do()
127+
if err != nil {
128+
return err
129+
}
130+
return h.waitForOperation(op)
131+
}
132+
125133
func (h *GceHelper) DeleteInstance(name string) error {
126134
op, err := h.Service.Instances.Delete(h.Project, h.Zone, name).Do()
127135
if err != nil {

0 commit comments

Comments
 (0)