feat(zfs-localpv): initial commit

provisioning and deprovisioning of
the volumes on the node where zfs pool
has already been setup. Pool name and the volume
parameters has to be given in storage class
which will be used to provision the volume.

Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
Pawan 2019-09-12 12:32:17 +05:30 committed by Kiran Mova
parent 485e2a21f0
commit 9f5cf445df
46 changed files with 6339 additions and 0 deletions

153
Makefile Normal file
View file

@ -0,0 +1,153 @@
# list only csi source code directories
PACKAGES = $(shell go list ./... | grep -v 'vendor\|pkg/generated')
# Lint our code. Reference: https://golang.org/cmd/vet/
VETARGS?=-asmdecl -atomic -bool -buildtags -copylocks -methods \
-nilfunc -printf -rangeloops -shift -structtags -unsafeptr
# Tools required for different make
# targets or for development purposes
EXTERNAL_TOOLS=\
github.com/golang/dep/cmd/dep \
golang.org/x/tools/cmd/cover \
github.com/axw/gocov/gocov \
gopkg.in/matm/v1/gocov-html \
github.com/ugorji/go/codec/codecgen \
github.com/onsi/ginkgo/ginkgo \
github.com/onsi/gomega/...
ifeq (${IMAGE_TAG}, )
IMAGE_TAG = ci
export IMAGE_TAG
endif
ifeq (${TRAVIS_TAG}, )
BASE_TAG = ci
export BASE_TAG
else
BASE_TAG = ${TRAVIS_TAG}
export BASE_TAG
endif
# Specify the name for the binary
CSI_DRIVER=zfs-driver
# Specify the date o build
BUILD_DATE = $(shell date +'%Y%m%d%H%M%S')
.PHONY: all
all: test zfs-driver-image
.PHONY: clean
clean:
go clean -testcache
rm -rf bin
rm -rf ${GOPATH}/bin/${CSI_DRIVER}
rm -rf ${GOPATH}/pkg/*
.PHONY: format
format:
@echo "--> Running go fmt"
@go fmt $(PACKAGES)
.PHONY: test
test: format
@echo "--> Running go test" ;
@go test $(PACKAGES)
# Bootstrap downloads tools required
# during build
.PHONY: bootstrap
bootstrap:
@for tool in $(EXTERNAL_TOOLS) ; do \
echo "+ Installing $$tool" ; \
go get -u $$tool; \
done
# SRC_PKG is the path of code files
SRC_PKG := github.com/openebs/zfs-localpv/pkg
# code generation for custom resources
.PHONY: kubegen
kubegen: kubegendelete deepcopy-install clientset-install lister-install informer-install
@GEN_SRC=openebs.io/core/v1alpha1 make deepcopy clientset lister informer
# deletes generated code by codegen
.PHONY: kubegendelete
kubegendelete:
@rm -rf pkg/generated/clientset
@rm -rf pkg/generated/lister
@rm -rf pkg/generated/informer
.PHONY: deepcopy-install
deepcopy-install:
@go install ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
.PHONY: deepcopy
deepcopy:
@echo "+ Generating deepcopy funcs for $(GEN_SRC)"
@deepcopy-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--output-file-base zz_generated.deepcopy \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: clientset-install
clientset-install:
@go install ./vendor/k8s.io/code-generator/cmd/client-gen
.PHONY: clientset
clientset:
@echo "+ Generating clientsets for $(GEN_SRC)"
@client-gen \
--fake-clientset=true \
--input $(GEN_SRC) \
--input-base $(SRC_PKG)/apis \
--clientset-path $(SRC_PKG)/generated/clientset \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: lister-install
lister-install:
@go install ./vendor/k8s.io/code-generator/cmd/lister-gen
.PHONY: lister
lister:
@echo "+ Generating lister for $(GEN_SRC)"
@lister-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--output-package $(SRC_PKG)/generated/lister \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: informer-install
informer-install:
@go install ./vendor/k8s.io/code-generator/cmd/informer-gen
.PHONY: informer
informer:
@echo "+ Generating informer for $(GEN_SRC)"
@informer-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--versioned-clientset-package $(SRC_PKG)/generated/clientset/internalclientset \
--listers-package $(SRC_PKG)/generated/lister \
--output-package $(SRC_PKG)/generated/informer \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: zfs-driver
zfs-driver:
@echo "--------------------------------"
@echo "+ Building ${CSI_DRIVER} "
@echo "--------------------------------"
@PNAME=${CSI_DRIVER} CTLNAME=${CSI_DRIVER} sh -c "'$(PWD)/buildscripts/build.sh'"
.PHONY: zfs-driver-image
zfs-driver-image: zfs-driver
@echo "--------------------------------"
@echo "+ Generating ${CSI_DRIVER} image"
@echo "--------------------------------"
@cp bin/${CSI_DRIVER}/${CSI_DRIVER} buildscripts/${CSI_DRIVER}/
cd buildscripts/${CSI_DRIVER} && sudo docker build -t openebs/${CSI_DRIVER}:${IMAGE_TAG} --build-arg BUILD_DATE=${BUILD_DATE} . && sudo docker tag openebs/${CSI_DRIVER}:${IMAGE_TAG} quay.io/openebs/${CSI_DRIVER}:${IMAGE_TAG}
@rm buildscripts/${CSI_DRIVER}/${CSI_DRIVER}
# Push images
deploy-images:
@DIMAGE="openebs/zfs-driver" ./buildscripts/push