diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4740cb7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: ovnmon-ci + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + name: Build & Unit Test + runs-on: ubuntu-latest + steps: + + - name: Set up Go 1.16 + uses: actions/setup-go@v2 + with: + go-version: 1.16 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Build + run: make + + - name: golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + version: v1.40.1 + diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..c046a6e --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,17 @@ +linters: + disable-all: true + enable: + - deadcode + - errcheck + - gocyclo + - goimports + - gosimple + - govet + - ineffassign + - misspell + - revive + - staticcheck + - structcheck + - typecheck + - unused + - varcheck diff --git a/Makefile b/Makefile index 53937c5..de67601 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,11 @@ clean: @rm -rf $(BIN_PATH) $(MODEL_GEN): - go install github.com/ovn-org/libovsdb/cmd/modelgen + @go install github.com/ovn-org/libovsdb/cmd/modelgen $(BIN_PATH)/$(BINARY_NAME): $(MODEL_GEN) - PATH="$${PATH}:$${GOPATH}/bin" go generate ./... - go build -o $@ $(BINARY_MOD) + @export PATH="$${PATH}:$${GOPATH}/bin"; go generate ./... + @go build -o $@ $(BINARY_MOD) diff --git a/cmd/ovnmon/ovnmon.go b/cmd/ovnmon/ovnmon.go index d6e7c2b..e994dc9 100644 --- a/cmd/ovnmon/ovnmon.go +++ b/cmd/ovnmon/ovnmon.go @@ -17,13 +17,10 @@ const ( ) var ( - ovs *client.OvsdbClient db = flag.String("db", "", "Database connection. Default: unix:/${OVS_RUNDIR}/ovnnb_db.sock") - auto = flag.Bool("auto", false, "Autostart: If set to true, it will start monitoring from the begining") + auto = flag.Bool("auto", false, "Autostart: If set to true, it will start monitoring from the beginning") ) -type ormSignal struct{} - func main() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "%s [FLAGS] [COMMAND] \n", os.Args[0]) @@ -39,11 +36,11 @@ func main() { if *db != "" { addr = *db } else { - var ovs_rundir = os.Getenv("OVS_RUNDIR") - if ovs_rundir == "" { - ovs_rundir = "/var/run/openvswitch" + var ovsRundir = os.Getenv("OVS_RUNDIR") + if ovsRundir == "" { + ovsRundir = "/var/run/openvswitch" } - addr = "unix:" + ovs_rundir + "/" + ovnnbSocket + addr = "unix:" + ovsRundir + "/" + ovnnbSocket } dbModel, err := model.FullDatabaseModel() diff --git a/cmd/ovnmon/shell.go b/cmd/ovnmon/shell.go index b5da6e4..e8fe5f4 100644 --- a/cmd/ovnmon/shell.go +++ b/cmd/ovnmon/shell.go @@ -129,7 +129,7 @@ func (s *OvnShell) Run(ovs *client.OvsdbClient, args ...string) { Name: "start", Help: "Start monitoring activity of the OVN DB", Func: func(c *ishell.Context) { - ovnShell := c.Get("ovnShell") + ovnShell := c.Get("ovnnShell") if ovnShell == nil { c.Println("Error: No context") } @@ -234,10 +234,15 @@ func (s *OvnShell) Run(ovs *client.OvsdbClient, args ...string) { } // Render the result table - printer.Append(reflect.Indirect(valueList).Interface()) + err = printer.Append(reflect.Indirect(valueList).Interface()) + if err != nil { + c.Println(err) + } printer.Render() // Print the result table through shell so it can be paged - c.ShowPaged(buffer.String()) + if err := c.ShowPaged(buffer.String()); err != nil { + panic(err) + } }, Completer: func(args []string) []string { return tableFields[tableName] @@ -249,8 +254,9 @@ func (s *OvnShell) Run(ovs *client.OvsdbClient, args ...string) { // If we have arguments, just run them and exit if len(args) > 0 { - shell.Process(args...) - return + if err := shell.Process(args...); err != nil { + panic(err) + } } shell.Run() } diff --git a/cmd/ovnmon/tables.go b/cmd/ovnmon/tables.go index fa7fe89..749639a 100644 --- a/cmd/ovnmon/tables.go +++ b/cmd/ovnmon/tables.go @@ -65,7 +65,6 @@ func NewStructPrinter(writer io.Writer, stype reflect.Type, fieldSel ...string) } } cols = fieldSel - cols = fieldSel } else { for i := 0; i < stype.NumField(); i++ { field := stype.Field(i).Name