Skip to content

Commit ca26aa6

Browse files
sbueringerk8s-ci-robot
authored andcommitted
Pr v1alpha2 kubeadm bootstrapper (#452)
* migrate to kubeadm bootstrapper * update deps * migrated to kubeadm bootstrapper & rewrite examples * fix tests * fix generate tests * fix test output folder * fix tests * migrate to kustomize v3.1.0 * fix awsmachine * fix version * fix tests, reorder makefile * fix tests, update cluster-api dep * rework examples to be able to deploy multiple cluster * ignore controller tests for now * fix generate test * fix tests * bugfix to handle verify from cloud.yaml * remove fixed todo * update docs regarding clusterctl
1 parent fc36935 commit ca26aa6

File tree

322 files changed

+2682
-47575
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

322 files changed

+2682
-47575
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*.so
77
*.dylib
88
bin
9+
tmp
910

1011
# Test binary, build with `go test -c`
1112
*.test

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
# Build the manager binary
16-
#FROM golang:1.12.7 as builder
16+
#FROM golang:1.12.9 as builder
1717
#
1818
## Copy in the go src
1919
#WORKDIR ${GOPATH}/src/sigs.k8s.io/cluster-api-provider-openstack
@@ -39,7 +39,7 @@
3939
#ENTRYPOINT ["/manager"]
4040

4141
# Build the manager binary
42-
FROM golang:1.12.7
42+
FROM golang:1.12.9
4343

4444
# default the go proxy
4545
ARG goproxy=https://proxy.golang.org

Makefile

Lines changed: 99 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,16 @@ RBAC_ROOT ?= "$(MANIFEST_ROOT)/rbac"
1111
GIT_HOST = sigs.k8s.io
1212
PWD := $(shell pwd)
1313
BASE_DIR := $(shell basename $(PWD))
14-
TESTARGS_DEFAULT := "-v"
15-
export TESTARGS ?= $(TESTARGS_DEFAULT)
1614

1715
HAS_LINT := $(shell command -v golint;)
1816
HAS_GOX := $(shell command -v gox;)
1917
HAS_YQ := $(shell command -v yq;)
18+
HAS_KUSTOMIZE := $(shell command -v kustomize;)
19+
HAS_ENVSUBST := $(shell command -v envsubst;)
2020
GOX_PARALLEL ?= 3
2121
TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le
2222
DIST_DIRS = find * -type d -exec
2323

24-
GENERATE_YAML_PATH=samples
25-
GENERATE_YAML_EXEC=generate-yaml.sh
26-
GENERATE_YAML_TEST_FOLDER=dummy-make-auto-test
27-
2824
GOOS ?= $(shell go env GOOS)
2925
VERSION ?= $(shell git describe --exact-match 2> /dev/null || \
3026
git describe --match=$(git rev-parse --short=8 HEAD) --always --dirty --abbrev=8)
@@ -40,9 +36,6 @@ PULL_POLICY ?= Always
4036
# Used in docker-* targets.
4137
MANAGER_IMAGE ?= $(REGISTRY)/$(MANAGER_IMAGE_NAME):$(MANAGER_IMAGE_TAG)
4238

43-
.PHONY: vendor
44-
vendor: ## Runs go mod to ensure proper vendoring.
45-
./hack/update-vendor.sh
4639

4740
build: binary images
4841

@@ -60,28 +53,8 @@ clusterctl:
6053
-o bin/clusterctl \
6154
cmd/clusterctl/main.go
6255

63-
test: unit functional generate_yaml_test
64-
6556
check: vendor fmt vet lint
6657

67-
generate_yaml_test:
68-
ifndef HAS_YQ
69-
go get github.com/mikefarah/yq
70-
echo "installing yq"
71-
endif
72-
# Create a dummy file for test only
73-
echo 'clouds' > dummy-clouds-test.yaml
74-
$(GENERATE_YAML_PATH)/$(GENERATE_YAML_EXEC) -f dummy-clouds-test.yaml openstack ubuntu $(GENERATE_YAML_TEST_FOLDER)
75-
# the folder will be generated under same folder of $(GENERATE_YAML_PATH)
76-
rm -fr $(GENERATE_YAML_PATH)/$(GENERATE_YAML_TEST_FOLDER)
77-
rm dummy-clouds-test.yaml
78-
79-
unit: generate vendor
80-
go test -tags=unit ./pkg/... ./cmd/... $(TESTARGS)
81-
82-
functional:
83-
@echo "$@ not yet implemented"
84-
8558
fmt:
8659
hack/verify-gofmt.sh
8760

@@ -119,15 +92,6 @@ env:
11992
go version
12093
go env
12194

122-
clean:
123-
rm -rf _dist bin/manager bin/clusterctl
124-
125-
realclean: clean
126-
rm -rf vendor
127-
if [ "$(GOPATH)" = "$(GOPATH_DEFAULT)" ]; then \
128-
rm -rf $(GOPATH); \
129-
fi
130-
13195
shell:
13296
$(SHELL) -i
13397

@@ -165,32 +129,108 @@ dist: build-cross
165129
$(DIST_DIRS) zip -r cluster-api-provider-openstack-$(VERSION)-{}.zip {} \; \
166130
)
167131

168-
# Generate code
132+
# TODO(sbueringer) target below are already cleaned up after v1alpha2 refactoring
133+
# targets above have to be cleaned up
134+
135+
## --------------------------------------
136+
## Testing
137+
## --------------------------------------
138+
139+
.PHONY: test
140+
test: generate lint ## Run tests
141+
$(MAKE) test-go
142+
$(MAKE) test-generate-examples
143+
144+
.PHONY: test-go
145+
test-go: ## Run tests
146+
go test -v -tags=unit ./api/... ./pkg/... ./controllers/...
147+
148+
test-generate-examples:
149+
ifndef HAS_YQ
150+
go get github.com/mikefarah/yq
151+
echo "installing yq"
152+
endif
153+
ifndef HAS_KUSTOMIZE
154+
GO111MODULE=on go get sigs.k8s.io/kustomize/v3/cmd/kustomize
155+
echo "installing kustomize"
156+
endif
157+
ifndef HAS_ENVSUBST
158+
go get github.com/a8m/envsubst/cmd/envsubst
159+
echo "installing envsubst"
160+
endif
161+
# Create a dummy file for test only
162+
mkdir tmp
163+
echo 'clouds' > tmp/dummy-clouds-test.yaml
164+
examples/generate.sh -f tmp/dummy-clouds-test.yaml openstack tmp/dummy-make-auto-test
165+
# the folder will be generated under same folder of examples
166+
rm -rf tmp/dummy-make-auto-test
167+
rm tmp/dummy-clouds-test.yaml
168+
169+
## --------------------------------------
170+
## Generate
171+
## --------------------------------------
172+
173+
.PHONY: vendor
174+
vendor: ## Runs go mod to ensure proper vendoring.
175+
./hack/update-vendor.sh
176+
169177
.PHONY: generate
170-
generate:
178+
generate: ## Generate code
179+
$(MAKE) generate-go
171180
$(MAKE) generate-manifests
172-
#TODO(sbueringer) will work after we migrated to kubeadm (because there are problems generating structs with kubeadm structs embedded)
173-
# $(MAKE) generate-kubebuilder-code
181+
$(MAKE) generate-deepcopy
182+
183+
.PHONY: generate-go
184+
generate-go: ## Runs go generate
185+
go generate ./pkg/... ./cmd/...
174186

175-
# Generate manifests e.g. CRD, RBAC etc.
176187
.PHONY: generate-manifests
177-
#generate-manifests: $(CONTROLLER_GEN)
178-
# go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
179-
# paths=./api/... \
180-
# crd:trivialVersions=true \
181-
# output:crd:dir=$(CRD_ROOT) \
182-
# output:webhook:dir=$(WEBHOOK_ROOT) \
183-
# webhook
184-
# go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
185-
# paths=./controllers/... \
186-
# output:rbac:dir=$(RBAC_ROOT) \
187-
# rbac:roleName=manager-role
188-
189-
.PHONY: generate-kubebuilder-code
190-
generate-kubebuilder-code: ## Runs controller-gen
188+
generate-manifests: ## Generate manifests e.g. CRD, RBAC etc.
189+
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
190+
paths=./api/... \
191+
crd:trivialVersions=true \
192+
output:crd:dir=$(CRD_ROOT) \
193+
output:webhook:dir=$(WEBHOOK_ROOT) \
194+
webhook
195+
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
196+
paths=./controllers/... \
197+
output:rbac:dir=$(RBAC_ROOT) \
198+
rbac:roleName=manager-role
199+
200+
.PHONY: generate-deepcopy
201+
generate-deepcopy: ## Runs controller-gen to generate deepcopy files.
191202
go run vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
192203
paths=./api/... \
193204
object:headerFile=./hack/boilerplate/boilerplate.generatego.txt
194205

195-
.PHONY: build clean cover vendor docs fmt functional lint realclean \
196-
relnotes test translation version build-cross dist manifests
206+
.PHONY: generate-examples
207+
generate-examples: clean-examples ## Generate examples configurations to run a cluster.
208+
./examples/generate.sh
209+
210+
## --------------------------------------
211+
## Cleanup / Verification
212+
## --------------------------------------
213+
214+
.PHONY: clean
215+
clean: ## Remove all generated files
216+
$(MAKE) clean-bin
217+
$(MAKE) clean-temporary
218+
219+
.PHONY: clean-bin
220+
clean-bin: ## Remove all generated binaries
221+
rm -rf bin
222+
223+
.PHONY: clean-temporary
224+
clean-temporary: ## Remove all temporary files and folders
225+
rm -f minikube.kubeconfig
226+
rm -f kubeconfig
227+
rm -rf out/
228+
229+
.PHONY: clean-examples
230+
clean-examples: ## Remove all the temporary files generated in the examples folder
231+
rm -rf examples/_out/
232+
rm -f examples/provider-components/provider-components-*.yaml
233+
234+
235+
.PHONY: build clean cover vendor docs fmt functional lint \
236+
translation version build-cross dist manifests

0 commit comments

Comments
 (0)