Skip to content

Commit

Permalink
Metadata Syncer for vsphere CSI Driver
Browse files Browse the repository at this point in the history
  • Loading branch information
RaunakShah committed Sep 6, 2019
1 parent c00454d commit 25600fe
Show file tree
Hide file tree
Showing 8 changed files with 650 additions and 9 deletions.
38 changes: 35 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ GOARCH ?= amd64

LDFLAGS := $(shell cat hack/make/ldflags.txt)
LDFLAGS_CSI := $(LDFLAGS) -X "$(MOD_NAME)/pkg/csi/service.version=$(VERSION)"
LDFLAGS_SYNCER := $(LDFLAGS)

# The CSI binary.
CSI_BIN_NAME := vsphere-csi
Expand All @@ -87,8 +88,21 @@ $(CSI_BIN): $(CSI_BIN_SRCS)
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags '$(LDFLAGS_CSI)' -o $(abspath $@) $<
@touch $@

# The Syncer binary.
SYNCER_BIN_NAME := syncer
SYNCER_BIN := $(BIN_OUT)/$(SYNCER_BIN_NAME).$(GOOS)_$(GOARCH)
build-syncer: $(SYNCER_BIN)
ifndef SYNCER_BIN_SRCS
SYNCER_BIN_SRCS := cmd/$(SYNCER_BIN_NAME)/main.go go.mod go.sum
SYNCER_BIN_SRCS += $(addsuffix /*.go,$(shell go list -f '{{ join .Deps "\n" }}' ./cmd/$(SYNCER_BIN_NAME) | grep $(MOD_NAME) | sed 's~$(MOD_NAME)~.~'))
export SYNCER_BIN_SRCS
endif
$(SYNCER_BIN): $(SYNCER_BIN_SRCS)
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags '$(LDFLAGS_SYNCER)' -o $(abspath $@) $<
@touch $@

# The default build target.
build build-bins: $(CSI_BIN)
build build-bins: $(CSI_BIN) $(SYNCER_BIN)
build-with-docker:
hack/make.sh

Expand All @@ -110,7 +124,24 @@ $(DIST_CSI_ZIP): $(CSI_BIN)
zip -j $(abspath $@) README.md LICENSE "$${_temp_dir}/$(CSI_BIN_NAME)" && \
rm -fr "$${_temp_dir}"

dist: dist-csi-tgz dist-csi-zip
dist-csi: dist-csi-tgz dist-csi-zip

DIST_SYNCER_NAME := vsphere-syncer-$(VERSION)
DIST_SYNCER_TGZ := $(BUILD_OUT)/dist/$(DIST_SYNCER_NAME)-$(GOOS)_$(GOARCH).tar.gz
dist-syncer-tgz: $(DIST_SYNCER_TGZ)
$(DIST_SYNCER_TGZ): $(SYNCER_BIN)
_temp_dir=$$(mktemp -d) && cp $< "$${_temp_dir}/$(SYNCER_BIN_NAME)" && \
tar czf $(abspath $@) README.md LICENSE -C "$${_temp_dir}" "$(SYNCER_BIN_NAME)" && \
rm -fr "$${_temp_dir}"
DIST_SYNCER_ZIP := $(BUILD_OUT)/dist/$(DIST_SYNCER_NAME)-$(GOOS)_$(GOARCH).zip
dist-syncer-zip: $(DIST_SYNCER_ZIP)
$(DIST_SYNCER_ZIP): $(SYNCER_BIN)
_temp_dir=$$(mktemp -d) && cp $< "$${_temp_dir}/$(SYNCER_BIN_NAME)" && \
zip -j $(abspath $@) README.md LICENSE "$${_temp_dir}/$(SYNCER_BIN_NAME)" && \
rm -fr "$${_temp_dir}"
dist-syncer: dist-syncer-tgz dist-syncer-zip

dist: dist-csi dist-syncer

################################################################################
## DEPLOY ##
Expand All @@ -129,8 +160,9 @@ deploy: | $(DOCKER_SOCK)
clean:
@rm -f Dockerfile*
rm -f $(CSI_BIN) vsphere-csi-*.tar.gz vsphere-csi-*.zip \
$(SYNCER_BIN) vsphere-syncer-*.tar.gz vsphere-syncer-*.zip \
image-*.tar image-*.d $(DIST_OUT)/* $(BIN_OUT)/*
GO111MODULE=off go clean -i -x . ./cmd/$(CSI_BIN_NAME)
GO111MODULE=off go clean -i -x . ./cmd/$(CSI_BIN_NAME) ./cmd/$(SYNCER_BIN_NAME)

.PHONY: clean-d
clean-d:
Expand Down
37 changes: 37 additions & 0 deletions cmd/syncer/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
Copyright 2019 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package main

import (
"flag"
"os"

"k8s.io/klog"

metadatasyncer "sigs.k8s.io/vsphere-csi-driver/pkg/syncer"
)

// main is ignored when this package is built as a go plug-in.
func main() {
klog.InitFlags(nil)
flag.Parse()
metadataSyncer := metadatasyncer.NewInformer()
if err := metadataSyncer.Init(); err != nil {
klog.Errorf("Error initializing Metadata Syncer")
os.Exit(1)
}
}
8 changes: 2 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ require (
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
github.com/davecgh/go-spew v1.1.1
github.com/evanphx/json-patch v4.5.0+incompatible // indirect
github.com/gogo/protobuf v1.3.0 // indirect
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect
github.com/google/btree v1.0.0 // indirect
github.com/google/go-cmp v0.3.1 // indirect
github.com/googleapis/gnostic v0.3.1 // indirect
github.com/gorilla/websocket v1.4.1 // indirect
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.11.1 // indirect
Expand Down Expand Up @@ -47,23 +47,19 @@ require (
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.10.0 // indirect
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 // indirect
golang.org/x/lint v0.0.0-20190409202823-959b441ac422 // indirect
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect
golang.org/x/sys v0.0.0-20190904005037-43c01164e931 // indirect
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect
golang.org/x/tools v0.0.0-20190903163617-be0da057c5e3 // indirect
google.golang.org/appengine v1.6.2 // indirect
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 // indirect
google.golang.org/grpc v1.23.0
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/gcfg.v1 v1.2.3
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
honnef.co/go/tools v0.0.1-2019.2.2 // indirect
k8s.io/api v0.0.0-20190831074750-7364b6bdad65
k8s.io/apimachinery v0.0.0-20190831074630-461753078381
k8s.io/client-go v0.0.0-20190831074946-3fe2abece89e
k8s.io/klog v0.4.0
k8s.io/sample-controller v0.0.0-20190831080103-b17b22266fdc
k8s.io/sample-controller v0.0.0-20180822125000-be98dc6210ab
k8s.io/utils v0.0.0-20190829053155-3a4a5477acf8 // indirect
)
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEo
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
Expand Down Expand Up @@ -399,6 +400,8 @@ k8s.io/klog v0.4.0 h1:lCJCxf/LIowc2IGS9TPjWDyXY4nOmdGdfcwwDQCOURQ=
k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf h1:EYm5AW/UUDbnmnI+gK0TJDVK9qPLhM+sRHYanNKw0EQ=
k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
k8s.io/sample-controller v0.0.0-20180822125000-be98dc6210ab h1:nCbBVL6ta3pT1FixeONrGFmoR01Y0z/APJMFtS9iHh4=
k8s.io/sample-controller v0.0.0-20180822125000-be98dc6210ab/go.mod h1:ulrg2qtVB4979TuA1BhaD/oGPZxO5NRWwHbk2FgaC3g=
k8s.io/sample-controller v0.0.0-20190831080103-b17b22266fdc h1:JQqSOppU1DHtVO9jtFIRq1odTK3hDEmi+A7xWCjEcU4=
k8s.io/sample-controller v0.0.0-20190831080103-b17b22266fdc/go.mod h1:GyUkrAM6QUT61osvjhs7agFIoS1oI9h+/q6xAi0wDcA=
k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
Expand Down
25 changes: 25 additions & 0 deletions hack/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,20 @@ readonly BASE_IMAGE_REPO=gcr.io/cloud-provider-vsphere

# Release images
readonly CSI_IMAGE_RELEASE=${BASE_IMAGE_REPO}/csi/release/driver
readonly SYNCER_IMAGE_RELEASE=${BASE_IMAGE_REPO}/csi/release/syncer

# PR images
readonly CSI_IMAGE_PR=${BASE_IMAGE_REPO}/csi/pr/driver
readonly SYNCER_IMAGE_PR=${BASE_IMAGE_REPO}/csi/pr/syncer

# CI images
readonly CSI_IMAGE_CI=${BASE_IMAGE_REPO}/csi/ci/driver
readonly SYNCER_IMAGE_CI=${BASE_IMAGE_REPO}/csi/ci/syncer

PUSH=
LATEST=
CSI_IMAGE_NAME=
SYNCER_IMAGE_NAME=
VERSION=$(git describe --dirty --always 2>/dev/null)
GCR_KEY_FILE="${GCR_KEY_FILE:-}"
GOPROXY="${GOPROXY:-}"
Expand Down Expand Up @@ -91,14 +95,17 @@ function build_images() {
ci)
# A non-PR, non-release build. This is usually a build off of master
CSI_IMAGE_NAME=${CSI_IMAGE_CI}
SYNCER_IMAGE_NAME=${SYNCER_IMAGE_CI}
;;
pr)
# A PR build
CSI_IMAGE_NAME=${CSI_IMAGE_PR}
SYNCER_IMAGE_NAME=${SYNCER_IMAGE_PR}
;;
release)
# On an annotated tag
CSI_IMAGE_NAME=${CSI_IMAGE_RELEASE}
SYNCER_IMAGE_NAME=${SYNCER_IMAGE_RELEASE}
;;
esac

Expand All @@ -110,9 +117,20 @@ function build_images() {
--build-arg "VERSION=${VERSION}" \
--build-arg "GOPROXY=${GOPROXY}" \
.

echo "building ${SYNCER_IMAGE_NAME}:${VERSION}"
docker build \
-f images/syncer/Dockerfile \
-t "${SYNCER_IMAGE_NAME}":"${VERSION}" \
--build-arg "VERSION=${VERSION}" \
--build-arg "GOPROXY=${GOPROXY}" \
.
if [ "${LATEST}" ]; then
echo "tagging image ${CSI_IMAGE_NAME}:${VERSION} as latest"
docker tag "${CSI_IMAGE_NAME}":"${VERSION}" "${CSI_IMAGE_NAME}":latest
echo "tagging image ${SYNCER_IMAGE_NAME}:${VERSION} as latest"
docker tag "${SYNCER_IMAGE_NAME}":"${VERSION}" "${SYNCER_IMAGE_NAME}":latest

fi
}

Expand All @@ -125,14 +143,21 @@ function login() {

function push_images() {
[ "${CSI_IMAGE_NAME}" ] || fatal "CSI_IMAGE_NAME not set"
[ "${SYNCER_IMAGE_NAME}" ] || fatal "SYNCER_IMAGE_NAME not set"

login

echo "pushing ${CSI_IMAGE_NAME}:${VERSION}"
docker push "${CSI_IMAGE_NAME}":"${VERSION}"
echo "pushing ${SYNCER_IMAGE_NAME}:${VERSION}"
docker push "${SYNCER_IMAGE_NAME}":"${VERSION}"

if [ "${LATEST}" ]; then
echo "also pushing ${CSI_IMAGE_NAME}:${VERSION} as latest"
docker push "${CSI_IMAGE_NAME}":latest
echo "also pushing ${SYNCER_IMAGE_NAME}:${VERSION} as latest"
docker push "${SYNCER_IMAGE_NAME}":latest

fi
}

Expand Down
50 changes: 50 additions & 0 deletions images/syncer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

################################################################################
## BUILD ARGS ##
################################################################################
# This build arg allows the specification of a custom Golang image.
ARG GOLANG_IMAGE=golang:1.12.6

# This build arg allows the specification of a custom base image.
ARG BASE_IMAGE=photon:2.0

################################################################################
## BUILD STAGE ##
################################################################################
FROM ${GOLANG_IMAGE} as builder

ARG GOPROXY

WORKDIR /build

COPY go.mod go.sum ./

COPY pkg/ pkg/

COPY cmd/ cmd/

ENV CGO_ENABLED=0

ENV GOPROXY ${GOPROXY:-}

RUN go build -o vsphere-syncer ./cmd/syncer

################################################################################
## MAIN STAGE ##
################################################################################
FROM ${BASE_IMAGE}

COPY --from=builder /build/vsphere-syncer /bin/vsphere-syncer

ENTRYPOINT ["/bin/vsphere-syncer"]
Loading

0 comments on commit 25600fe

Please sign in to comment.