Browse code

Interrupting a dockerbuild command should clean up leftovers

Clayton Coleman authored on 2016/05/10 03:09:39
Showing 1 changed files
... ...
@@ -13,6 +13,7 @@ import (
13 13
 
14 14
 	"k8s.io/kubernetes/pkg/credentialprovider"
15 15
 	kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
16
+	"k8s.io/kubernetes/pkg/util/interrupt"
16 17
 
17 18
 	cmdutil "github.com/openshift/origin/pkg/cmd/util"
18 19
 	"github.com/openshift/origin/pkg/cmd/util/clientcmd"
... ...
@@ -119,10 +120,16 @@ func (o *DockerbuildOptions) Run() error {
119 119
 		if glog.V(2) {
120 120
 			glog.Infof("Builder: "+format, args...)
121 121
 		} else {
122
-			fmt.Fprintf(e.ErrOut, "# %s\n", fmt.Sprintf(format, args...))
122
+			fmt.Fprintf(e.ErrOut, "--> %s\n", fmt.Sprintf(format, args...))
123 123
 		}
124 124
 	}
125
-	return stripLeadingError(e.Build(f, o.Arguments))
125
+	safe := interrupt.New(func(os.Signal) { os.Exit(1) }, func() {
126
+		glog.V(5).Infof("invoking cleanup")
127
+		if err := e.Cleanup(); err != nil {
128
+			fmt.Fprintf(o.Err, "error: Unable to clean up build: %v\n", err)
129
+		}
130
+	})
131
+	return safe.Run(func() error { return stripLeadingError(e.Build(f, o.Arguments)) })
126 132
 }
127 133
 
128 134
 func stripLeadingError(err error) error {