From 252dd5bff6d8cf0c1105fa4ddf6a1cdfad4d4201 Mon Sep 17 00:00:00 2001 From: Ben Parees Date: Mon, 30 Oct 2017 16:36:03 -0400 Subject: [PATCH 1/2] setup selinux labels for build containers --- pkg/build/builder/docker.go | 5 +++++ pkg/build/builder/sti.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/pkg/build/builder/docker.go b/pkg/build/builder/docker.go index 6150d48380b4..ae6066009796 100644 --- a/pkg/build/builder/docker.go +++ b/pkg/build/builder/docker.go @@ -313,6 +313,11 @@ func (d *DockerBuilder) dockerBuild(dir string, tag string, secrets []buildapi.S } opts.NetworkMode = network if len(resolvConfHostPath) != 0 { + cmd := exec.Command("chcon", "system_u:object_r:svirt_sandbox_file_t:s0", "/etc/resolv.conf") + err := cmd.Run() + if err != nil { + return fmt.Errorf("unable to set permissions on /etc/resolv.conf: %v", err) + } opts.BuildBinds = fmt.Sprintf("[\"%s:/etc/resolv.conf\"]", resolvConfHostPath) } // Though we are capped on memory and cpu at the cgroup parent level, diff --git a/pkg/build/builder/sti.go b/pkg/build/builder/sti.go index e63543f4cca1..d17832c7ce8b 100644 --- a/pkg/build/builder/sti.go +++ b/pkg/build/builder/sti.go @@ -7,6 +7,7 @@ import ( "fmt" "net/url" "os" + "os/exec" "path/filepath" "strings" "time" @@ -203,6 +204,11 @@ func (s *S2IBuilder) Build() error { } if len(resolvConfHostPath) != 0 { + cmd := exec.Command("chcon", "system_u:object_r:svirt_sandbox_file_t:s0", "/etc/resolv.conf") + err := cmd.Run() + if err != nil { + return fmt.Errorf("unable to set permissions on /etc/resolv.conf: %v", err) + } config.BuildVolumes = []string{fmt.Sprintf("%s:/etc/resolv.conf", resolvConfHostPath)} } From f6c034504bba822abab357b2857dc69a9a3ef3b6 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Mon, 6 Nov 2017 17:50:16 +0100 Subject: [PATCH 2/2] UPSTREAM: 55631: Parse and return the last line in the log even if it is partial Signed-off-by: Antonio Murdaca --- .../kubelet/kuberuntime/kuberuntime_logs.go | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_logs.go b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_logs.go index 4f9513d4b570..99f7c1393421 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_logs.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_logs.go @@ -154,6 +154,27 @@ func (m *kubeGenericRuntimeManager) ReadLogs(path, containerID string, apiOpts * // Return directly when reading to the end if not follow. if len(l) > 0 { glog.Warningf("Incomplete line in log file %q: %q", path, l) + if parse == nil { + // Intialize the log parsing function. + parse, err = getParseFunc(l) + if err != nil { + return fmt.Errorf("failed to get parse function: %v", err) + } + } + // Log a warning and exit if we can't parse the partial line. + if err := parse(l, msg); err != nil { + glog.Warningf("Failed with err %v when parsing partial line for log file %q: %q", err, path, l) + return nil + } + // Write the log line into the stream. + if err := writer.write(msg); err != nil { + if err == errMaximumWrite { + glog.V(2).Infof("Finish parsing log file %q, hit bytes limit %d(bytes)", path, opts.bytes) + return nil + } + glog.Errorf("Failed with err %v when writing partial log for log file %q: %+v", err, path, msg) + return err + } } glog.V(2).Infof("Finish parsing log file %q", path) return nil