Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove local gopath #88

Merged
merged 4 commits into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 14 additions & 1 deletion .github/workflows/buildtest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,22 @@ jobs:
go-version: 1.20.x
- name: check out code into the Go module directory
uses: actions/checkout@v3
- name: run unit-test
- name: run unit-test image test
run: make test

image-test:
name: image test
runs-on: ubuntu-22.04
steps:
- name: check out the repo
uses: actions/checkout@v3

- name: set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: build and test ib-sriov-cni image
run: make test-image
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!


coverage:
runs-on: ubuntu-22.04
needs: build
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Files
.gopath
.cover
*.cover

# Folders
build/
bin/
vendor/
101 changes: 44 additions & 57 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
# Package related
BINARY_NAME=ib-sriov
PACKAGE=ib-sriov-cni
ORG_PATH=github.com/k8snetworkplumbingwg
REPO_PATH=$(ORG_PATH)/$(PACKAGE)
GOPATH=$(CURDIR)/.gopath
GOBIN =$(CURDIR)/bin
BINDIR=$(CURDIR)/bin
BUILDDIR=$(CURDIR)/build
BASE=$(GOPATH)/src/$(REPO_PATH)
GOFILES=$(shell find . -name *.go | grep -vE "(\/vendor\/)|(_test.go)")
PKGS=$(or $(PKG),$(shell cd $(BASE) && env GOPATH=$(GOPATH) $(GO) list ./... | grep -v "^$(PACKAGE)/vendor/"))
TESTPKGS = $(shell env GOPATH=$(GOPATH) $(GO) list -f '{{ if or .TestGoFiles .XTestGoFiles }}{{ .ImportPath }}{{ end }}' $(PKGS))

export GOPATH
export GOBIN
BASE=$(CURDIR)
GOFILES=$(shell find . -name *.go | grep -vE "(_test.go)")
PKGS=$(or $(PKG),$(shell $(GO) list ./...))
TESTPKGS = $(shell $(GO) list -f '{{ if or .TestGoFiles .XTestGoFiles }}{{ .ImportPath }}{{ end }}' $(PKGS))

# Version
VERSION?=master
Expand All @@ -40,26 +33,16 @@ IMAGE_BUILD_OPTS += $(DOCKERARGS)

# Go tools
GO = go
GOLANGCI_LINT = $(GOBIN)/golangci-lint
# golangci-lint version should be updated periodically
# we keep it fixed to avoid it from unexpectedly failing on the project
# in case of a version bump
GOLANGCI_LINT_VER = v1.51.2
TIMEOUT = 15
Q = $(if $(filter 1,$V),,@)

.PHONY: all
all: lint build test-coverage

$(BASE): ; $(info setting GOPATH...)
@mkdir -p $(dir $@)
@ln -sf $(CURDIR) $@

$(GOBIN):
$(BINDIR):
@mkdir -p $@

$(BUILDDIR): | $(BASE) ; $(info Creating build directory...)
@cd $(BASE) && mkdir -p $@
$(BUILDDIR): ; $(info Creating build directory...)
@mkdir -p $@

build: $(BUILDDIR)/$(BINARY_NAME) ; $(info Building $(BINARY_NAME)...) ## Build executable file
$(info Done!)
Expand All @@ -68,80 +51,84 @@ $(BUILDDIR)/$(BINARY_NAME): $(GOFILES) | $(BUILDDIR)
@cd $(BASE)/cmd/$(PACKAGE) && CGO_ENABLED=0 $(GO) build -o $(BUILDDIR)/$(BINARY_NAME) -tags no_openssl -ldflags $(LDFLAGS) -v

# Tools
$(GOLANGCI_LINT): ; $(info installing golangci-lint...)
$Q go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VER)

GOLANGCI_LINT = $(BINDIR)/golangci-lint
# golangci-lint version should be updated periodically
# we keep it fixed to avoid it from unexpectedly failing on the project
# in case of a version bump
GOLANGCI_LINT_VER = v1.51.2
TIMEOUT = 15
$(GOLANGCI_LINT): | $(BINDIR) ; $(info installing golangci-lint...)
$Q GOBIN=$(BINDIR) go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VER)

GOVERALLS = $(BINDIR)/goveralls
$(GOVERALLS): | $(BINDIR) ; $(info installing goveralls...)
$(call go-install-tool,$(GOVERALLS),github.com/mattn/goveralls@latest)

HADOLINT_TOOL = $(BINDIR)/hadolint
$(HADOLINT_TOOL): | $(BINDIR) ; $(info installing hadolint...)
$(call wget-install-tool,$(HADOLINT_TOOL),"https://github.com/hadolint/hadolint/releases/download/v2.12.1-beta/hadolint-Linux-x86_64")

SHELLCHECK_TOOL = $(BINDIR)/shellcheck
$(SHELLCHECK_TOOL): | $(BASE) ; $(info installing shellcheck...)
$(call install-shellcheck,$(BINDIR),"https://github.com/koalaman/shellcheck/releases/download/v0.9.0/shellcheck-v0.9.0.linux.x86_64.tar.xz")

# Tests

.PHONY: lint
lint: | $(GOLANGCI_LINT) ; $(info running golangci-lint...) @ ## Run golangci-lint
lint: | $(GOLANGCI_LINT) ; $(info running golangci-lint...) ## Run golangci-lint
$Q $(GOLANGCI_LINT) run --timeout=5m

TEST_TARGETS := test-default test-bench test-short test-verbose test-race
.PHONY: $(TEST_TARGETS) test-xml check test tests
.PHONY: $(TEST_TARGETS) test tests
test-bench: ARGS=-run=__absolutelynothing__ -bench=. ## Run benchmarks
test-short: ARGS=-short ## Run only short tests
test-verbose: ARGS=-v ## Run tests in verbose mode with coverage reporting
test-race: ARGS=-race ## Run tests with race detector
$(TEST_TARGETS): NAME=$(MAKECMDGOALS:test-%=%)
$(TEST_TARGETS): test
check test tests: lint | $(BASE) ; $(info running $(NAME:%=% )tests...) @ ## Run tests
$Q cd $(BASE) && $(GO) test -timeout $(TIMEOUT)s $(ARGS) $(TESTPKGS)

test-xml: lint | $(BASE) $(GO2XUNIT) ; $(info running $(NAME:%=% )tests...) @ ## Run tests with xUnit output
$Q cd $(BASE) && 2>&1 $(GO) test -timeout 20s -v $(TESTPKGS) | tee test/tests.output
$(GO2XUNIT) -fail -input test/tests.output -output test/tests.xml

GOVERALLS = $(BINDIR)/goveralls
$(GOVERALLS): | $(BASE) ; $(info installing goveralls...)
$(call go-install-tool,$(GOVERALLS),github.com/mattn/goveralls@latest)

HADOLINT_TOOL = $(BINDIR)/hadolint
$(HADOLINT_TOOL): | $(BASE) ; $(info installing hadolint...)
$(call wget-install-tool,$(HADOLINT_TOOL),"https://github.com/hadolint/hadolint/releases/download/v2.12.1-beta/hadolint-Linux-x86_64")

SHELLCHECK_TOOL = $(BINDIR)/shellcheck
$(SHELLCHECK_TOOL): | $(BASE) ; $(info installing shellcheck...)
$(call install-shellcheck,$(BINDIR),"https://github.com/koalaman/shellcheck/releases/download/v0.9.0/shellcheck-v0.9.0.linux.x86_64.tar.xz")
test: ; $(info running $(NAME:%=% )tests...) @ ## Run tests
$Q $(GO) test -timeout $(TIMEOUT)s $(ARGS) $(TESTPKGS)

COVERAGE_MODE = count
COVER_PROFILE = ib-sriov-cni.cover
test-coverage-tools: | $(GOVERALLS)
test-coverage: test-coverage-tools | $(BASE) ; $(info running coverage tests...) @ ## Run coverage tests
test-coverage: | $(GOVERALLS) ; $(info running coverage tests...) ## Run coverage tests
$Q $(GO) test -covermode=$(COVERAGE_MODE) -coverprofile=$(COVER_PROFILE) ./...

.PHONY: upload-coverage
upload-coverage: test-coverage-tools | $(BASE) ; $(info uploading coverage results...) @ ## Upload coverage report
upload-coverage: | $(GOVERALLS) ; $(info uploading coverage results...) ## Upload coverage report
$(GOVERALLS) -coverprofile=$(COVER_PROFILE) -service=github

.PHONY: hadolint
hadolint: $(BASE) $(HADOLINT_TOOL); $(info running hadolint...) @ ## Run hadolint
hadolint: $(HADOLINT_TOOL); $(info running hadolint...) ## Run hadolint
$Q $(HADOLINT_TOOL) Dockerfile

.PHONY: shellcheck
shellcheck: $(BASE) $(SHELLCHECK_TOOL); $(info running shellcheck...) @ ## Run shellcheck
shellcheck: $(SHELLCHECK_TOOL); $(info running shellcheck...) ## Run shellcheck
$Q $(SHELLCHECK_TOOL) images/entrypoint.sh

# Container image
.PHONY: image
image: | $(BASE) ; $(info Building Docker image...) ## Build conatiner image
image: ; $(info Building Docker image...) ## Build conatiner image
@$(IMAGE_BUILDER) build -t $(TAG) -f $(DOCKERFILE) $(CURDIR) $(IMAGE_BUILD_OPTS)

# Dependency management
.PHONY: deps-update
deps-update: ; $(info updating dependencies...)
go mod tidy && go mod vendor
deps-update: ; $(info updating dependencies...) ## update dependencies by running go mod tidy
go mod tidy

test-image: image
.PHONY: test-image
test-image: image ## Test image
$Q $(BASE)/images/image_test.sh $(IMAGE_BUILDER) $(TAG)

tests: lint hadolint shellcheck test test-image ## Run lint, hadolint, shellcheck, unit test and image test

# Misc

.PHONY: clean
clean: ; $(info Cleaning...) ## Cleanup everything
clean: ; $(info Cleaning...) ## Cleanup everything
@$(GO) clean -modcache
@rm -rf $(GOPATH)
@rm -rf $(BINDIR)
@rm -rf $(BUILDDIR)
@rm -rf test

Expand Down
15 changes: 10 additions & 5 deletions cmd/ib-sriov-cni/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import (
"github.com/gofrs/flock"
"github.com/vishvananda/netlink"

"github.com/Mellanox/ib-sriov-cni/pkg/config"
"github.com/Mellanox/ib-sriov-cni/pkg/sriov"
localtypes "github.com/Mellanox/ib-sriov-cni/pkg/types"
"github.com/Mellanox/ib-sriov-cni/pkg/utils"
"github.com/k8snetworkplumbingwg/ib-sriov-cni/pkg/config"
"github.com/k8snetworkplumbingwg/ib-sriov-cni/pkg/sriov"
localtypes "github.com/k8snetworkplumbingwg/ib-sriov-cni/pkg/types"
"github.com/k8snetworkplumbingwg/ib-sriov-cni/pkg/utils"
)

const (
Expand Down Expand Up @@ -272,6 +272,11 @@ func cmdAdd(args *skel.CmdArgs) error {

newResult.Interfaces = result.Interfaces

for _, ipc := range newResult.IPs {
// only a single interface is handled by ib-sriov-cni, point ip IPConfig.Interface to it.
ipc.Interface = current.Int(0)
}

err = netns.Do(func(_ ns.NetNS) error {
return ipam.ConfigureIface(args.IfName, newResult)
})
Expand Down Expand Up @@ -396,5 +401,5 @@ func main() {
}

skel.PluginMain(cmdAdd, cmdCheck, cmdDel,
cniVersion.PluginSupports("0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0"), "")
cniVersion.All, "")
}
27 changes: 14 additions & 13 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
module github.com/Mellanox/ib-sriov-cni
module github.com/k8snetworkplumbingwg/ib-sriov-cni

go 1.20

require (
github.com/Mellanox/rdma-cni v1.0.1
github.com/containernetworking/cni v1.1.2
github.com/containernetworking/plugins v1.3.0
github.com/containernetworking/plugins v1.5.0
github.com/gofrs/flock v0.8.1
github.com/k8snetworkplumbingwg/rdma-cni v1.1.0
github.com/k8snetworkplumbingwg/sriovnet v1.2.0
github.com/onsi/ginkgo v1.16.5
github.com/onsi/gomega v1.27.6
github.com/onsi/ginkgo/v2 v2.19.0
github.com/onsi/gomega v1.33.1
github.com/stretchr/testify v1.8.4
github.com/vishvananda/netlink v1.2.1-beta.2
)

require (
github.com/Mellanox/rdmamap v1.1.0 // indirect
github.com/coreos/go-iptables v0.6.0 // indirect
github.com/coreos/go-iptables v0.7.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/nxadm/tail v1.4.8 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/safchain/ethtool v0.3.0 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/stretchr/objx v0.5.0 // indirect
github.com/vishvananda/netns v0.0.4 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
golang.org/x/tools v0.21.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading
Loading