The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/crio-lxc/pull/20

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===

From 282de8dec8e79cada960186e9cabba07b611a42f Mon Sep 17 00:00:00 2001
From: Michael McCracken <mikmc...@cisco.com>
Date: Mon, 10 Feb 2020 15:28:15 -0800
Subject: [PATCH 1/3] create: propagate errors from ensureShell function

Fixes #9

Signed-off-by: Michael McCracken <mikmc...@cisco.com>
---
 cmd/create.go | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/cmd/create.go b/cmd/create.go
index 6e6ed4b..0c52d23 100644
--- a/cmd/create.go
+++ b/cmd/create.go
@@ -54,32 +54,33 @@ var NamespaceMap = map[string]string{
        "uts":     "uts",
 }
 
-func ensureShell(rootfs string) {
+func ensureShell(rootfs string) error {
        shPath := filepath.Join(rootfs, "bin/sh")
        if exists, _ := pathExists(shPath); exists {
-               return
+               return nil
        }
        var err error
        err = RunCommand("mkdir", filepath.Join(rootfs, "bin"))
        if err != nil {
-               fmt.Printf("Failed doing mkdir: %v\n", err)
+               return errors.Wrapf(err, "Failed doing mkdir")
        }
        err = RunCommand("cp", "/bin/busybox", filepath.Join(rootfs, "bin/"))
        if err != nil {
-               fmt.Printf("Failed copying busybox: %v\n", err)
+               return errors.Wrapf(err, "Failed copying busybox")
        }
        err = RunCommand("ln", filepath.Join(rootfs, "bin/busybox"), 
filepath.Join(rootfs, "bin/stat"))
        if err != nil {
-               fmt.Printf("Failed linking stat: %v\n", err)
+               return errors.Wrapf(err, "Failed linking stat")
        }
        err = RunCommand("ln", filepath.Join(rootfs, "bin/busybox"), 
filepath.Join(rootfs, "bin/sh"))
        if err != nil {
-               fmt.Printf("Failed linking sh: %v\n", err)
+               return errors.Wrapf(err, "Failed linking sh")
        }
        err = RunCommand("ln", filepath.Join(rootfs, "bin/busybox"), 
filepath.Join(rootfs, "bin/tee"))
        if err != nil {
-               fmt.Printf("Failed linking tee : %v\n", err)
+               return errors.Wrapf(err, "Failed linking tee")
        }
+       return nil
 }
 
 const (
@@ -243,7 +244,9 @@ func configureContainer(ctx *cli.Context, c *lxc.Container, 
spec *specs.Spec) er
                return errors.Wrapf(err, "couldn't write wrapper init")
        }
 
-       ensureShell(spec.Root.Path)
+       if err := ensureShell(spec.Root.Path); err != nil {
+               return errors.Wrap(err, "couldn't ensure a shell exists in 
container")
+       }
 
        if err := c.SetConfigItem("lxc.init.cwd", spec.Process.Cwd); err != nil 
{
                return errors.Wrap(err, "failed to set CWD")

From 3718a05f3eb22bd0d3ba9979d3aa284cc44e4cee Mon Sep 17 00:00:00 2001
From: Michael McCracken <mikmc...@cisco.com>
Date: Mon, 10 Feb 2020 15:31:02 -0800
Subject: [PATCH 2/3] add linter target to makefile

adds initial lint.yaml with some common annoying messages excluded.

assumes you have golangci-lint installed.

Signed-off-by: Michael McCracken <mikmc...@cisco.com>
---
 Makefile  |  3 +++
 lint.yaml | 17 +++++++++++++++++
 2 files changed, 20 insertions(+)
 create mode 100644 lint.yaml

diff --git a/Makefile b/Makefile
index e92cbd1..1d8f2b2 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,9 @@ COMMIT=$(if $(shell git status --porcelain 
--untracked-files=no),$(COMMIT_HASH)-
 TEST?=$(patsubst test/%.bats,%,$(wildcard test/*.bats))
 PACKAGES_DIR?=~/packages
 
+lint:
+       golangci-lint run -c ./lint.yaml ./...
+
 crio-lxc: $(GO_SRC)
        go build -ldflags "-X main.version=$(COMMIT)" -o crio-lxc ./cmd
 
diff --git a/lint.yaml b/lint.yaml
new file mode 100644
index 0000000..f58ce3b
--- /dev/null
+++ b/lint.yaml
@@ -0,0 +1,17 @@
+issues:
+  exclude:
+    - 'Error return value of 
.((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*printf?|os\.(Un)?Setenv).
 is not checked'
+    - 'error strings should not be capitalized'
+    - 'error strings should not end with punctuation'
+    - 'File is not `goimports`-ed'
+    - 'has \d* occurrences, make it a constant'
+    - 'line is \d* characters'
+    - 'is a global variable'
+    - 'ifElseChain: rewrite if-else to switch statement'
+    - 'Error return value of `.*` is not checked'
+    - 'cyclomatic complexity \d* of func'
+    - 'G107: Potential HTTP request made with variable url'
+    - 'should have name of the form ErrFoo'
+    - 'naked return in func'
+    - 'by other packages, and that stutters; consider calling this'
+    - 'File is not `gofmt`-ed with `-s`'

From fa3e39e1e3873b530feb280184df64dec3024145 Mon Sep 17 00:00:00 2001
From: Michael McCracken <mikmc...@cisco.com>
Date: Mon, 10 Feb 2020 15:34:59 -0800
Subject: [PATCH 3/3] minor lint fixes

Signed-off-by: Michael McCracken <mikmc...@cisco.com>
---
 cmd/create.go | 2 +-
 cmd/state.go  | 2 +-
 cmd/utils.go  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cmd/create.go b/cmd/create.go
index 0c52d23..f0f20a5 100644
--- a/cmd/create.go
+++ b/cmd/create.go
@@ -105,7 +105,7 @@ func configureNamespaces(c *lxc.Container, spec 
*specs.Spec) error {
        var configVal string
        seenNamespaceTypes := map[specs.LinuxNamespaceType]bool{}
        for _, ns := range spec.Linux.Namespaces {
-               if _, ok := seenNamespaceTypes[ns.Type]; ok == true {
+               if _, ok := seenNamespaceTypes[ns.Type]; ok {
                        return fmt.Errorf("duplicate namespace type %s", 
ns.Type)
                }
                seenNamespaceTypes[ns.Type] = true
diff --git a/cmd/state.go b/cmd/state.go
index 6494752..c98918e 100644
--- a/cmd/state.go
+++ b/cmd/state.go
@@ -109,7 +109,7 @@ func doState(ctx *cli.Context) error {
        if err != nil {
                return errors.Wrap(err, "failed to marshal json")
        }
-       fmt.Fprintf(os.Stdout, string(stateJson))
+       fmt.Fprint(os.Stdout, string(stateJson))
 
        return nil
 }
diff --git a/cmd/utils.go b/cmd/utils.go
index a83bf13..aa3a45b 100644
--- a/cmd/utils.go
+++ b/cmd/utils.go
@@ -31,7 +31,7 @@ func readBundleSpec(specFilePath string) (spec *specs.Spec, 
err error) {
 
 func configureLogging(ctx *cli.Context, c *lxc.Container) error {
        if ctx.GlobalIsSet("log-level") {
-               logLevel := lxc.TRACE
+               var logLevel lxc.LogLevel
                switch ctx.GlobalString("log-level") {
                case "trace":
                        logLevel = lxc.TRACE
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to