Fix lint errors

Removal of io.go revealed new lint errors in pkg/util/io
This commit is contained in:
Jan Safranek 2017-06-14 15:37:19 +02:00
parent c2dc5b5bf1
commit b73517d437
2 changed files with 16 additions and 15 deletions

View File

@ -10,7 +10,6 @@ load(
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = ["writer.go"], srcs = ["writer.go"],
"//vendor/k8s.io/api/core/v1:go_default_library",
tags = ["automanaged"], tags = ["automanaged"],
deps = ["//vendor/github.com/golang/glog:go_default_library"], deps = ["//vendor/github.com/golang/glog:go_default_library"],
) )

View File

@ -28,6 +28,7 @@ import (
// Writer is an interface which allows to write data to a file. // Writer is an interface which allows to write data to a file.
type Writer interface { type Writer interface {
// WriteFile mimics ioutil.WriteFile.
WriteFile(filename string, data []byte, perm os.FileMode) error WriteFile(filename string, data []byte, perm os.FileMode) error
} }
@ -36,31 +37,32 @@ type Writer interface {
type StdWriter struct { type StdWriter struct {
} }
// WriteFile directly calls ioutil.WriteFile.
func (writer *StdWriter) WriteFile(filename string, data []byte, perm os.FileMode) error { func (writer *StdWriter) WriteFile(filename string, data []byte, perm os.FileMode) error {
return ioutil.WriteFile(filename, data, perm) return ioutil.WriteFile(filename, data, perm)
} }
// Alternative implementation of Writer interface that allows writing data to file // NsenterWriter is implementation of Writer interface that allows writing data
// using nsenter command. // to file using nsenter command.
// If a program (e.g. kubelet) runs in a container it may want to write data to // If a program (e.g. kubelet) runs in a container it may want to write data to
// a mounted device. Since in Docker, mount propagation mode is set to private, // a mounted device. Since in Docker, mount propagation mode is set to private,
// it will not see the mounted device in its own namespace. To work around this // it will not see the mounted device in its own namespace. To work around this
// limitaion one has to first enter hosts namespace (by using 'nsenter') and only // limitation one has to first enter hosts namespace (by using 'nsenter') and
// then write data. // only then write data.
type NsenterWriter struct { type NsenterWriter struct{}
}
// TODO: should take a writer, not []byte // WriteFile calls 'nsenter cat - > <the file>' and 'nsenter chmod' to create a
// file on the host.
func (writer *NsenterWriter) WriteFile(filename string, data []byte, perm os.FileMode) error { func (writer *NsenterWriter) WriteFile(filename string, data []byte, perm os.FileMode) error {
cmd := "nsenter" cmd := "nsenter"
base_args := []string{ baseArgs := []string{
"--mount=/rootfs/proc/1/ns/mnt", "--mount=/rootfs/proc/1/ns/mnt",
"--", "--",
} }
echo_args := append(base_args, "sh", "-c", fmt.Sprintf("cat > %s", filename)) echoArgs := append(baseArgs, "sh", "-c", fmt.Sprintf("cat > %s", filename))
glog.V(5).Infof("Command to write data to file: %v %v", cmd, echo_args) glog.V(5).Infof("Command to write data to file: %v %v", cmd, echoArgs)
command := exec.Command(cmd, echo_args...) command := exec.Command(cmd, echoArgs...)
command.Stdin = bytes.NewBuffer(data) command.Stdin = bytes.NewBuffer(data)
outputBytes, err := command.CombinedOutput() outputBytes, err := command.CombinedOutput()
if err != nil { if err != nil {
@ -68,9 +70,9 @@ func (writer *NsenterWriter) WriteFile(filename string, data []byte, perm os.Fil
return err return err
} }
chmod_args := append(base_args, "chmod", fmt.Sprintf("%o", perm), filename) chmodArgs := append(baseArgs, "chmod", fmt.Sprintf("%o", perm), filename)
glog.V(5).Infof("Command to change permissions to file: %v %v", cmd, chmod_args) glog.V(5).Infof("Command to change permissions to file: %v %v", cmd, chmodArgs)
outputBytes, err = exec.Command(cmd, chmod_args...).CombinedOutput() outputBytes, err = exec.Command(cmd, chmodArgs...).CombinedOutput()
if err != nil { if err != nil {
glog.Errorf("Output from chmod command: %v", string(outputBytes)) glog.Errorf("Output from chmod command: %v", string(outputBytes))
return err return err