-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.mk
119 lines (101 loc) · 3.23 KB
/
test.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
TEST_CLOUDSQL_ARTIFACTS := db1-cloudsql-appdbinstance.yaml db1-cloudsql-tfdestroy.yaml
TEST_APPDB_ARTIFACTS := db1-app1-appdb.yaml db1-app1-appdb-tfdestroy.yaml
TEST_ARTIFACTS := $(TEST_CLOUDSQL_ARTIFACTS) $(TEST_APPDB_ARTIFACTS)
GOOGLE_CREDENTIALS_SA_KEY := $(HOME)/.tf-google-sa-key.json
GOOGLE_PROVIDER_SECRET_NAME := tf-provider-google
project:
$(eval PROJECT := $(shell gcloud config get-value project))
backend_bucket: project
$(eval BACKEND_BUCKET := $(PROJECT)-appdb-operator)
define TEST_CLOUDSQL
apiVersion: ctl.isla.solutions/v1
kind: AppDBInstance
metadata:
name: {{NAME}}
spec:
driver:
cloudSQLTerraform:
params:
region: "us-central1"
database_version: "MYSQL_5_6"
tier: "db-f1-micro"
disk_size_gb: "10"
disk_type: "PD_SSD"
proxy:
image: gcr.io/cloudsql-docker/gce-proxy:1.11
replicas: 1
endef
define TEST_CLOUDSQL_DESTROY
apiVersion: ctl.isla.solutions/v1
kind: TerraformDestroy
metadata:
name: {{NAME}}
spec:
backendBucket: {{BACKEND_BUCKET}}
backendPrefix: {{BACKEND_PREFIX}}
providerConfig:
google:
secretName: {{GOOGLE_PROVIDER_SECRET_NAME}}
sources:
- tfapply: {{SRC_TFAPPLY}}
tfplan: {{SRC_TFAPPLY}}
tfvarsFrom:
- tfplan: {{SRC_TFAPPLY}}
tfapply: {{SRC_TFAPPLY}}
endef
define TEST_APPDB
apiVersion: ctl.isla.solutions/v1
kind: AppDB
metadata:
name: {{NAME}}
spec:
appDBInstance: {{APPDB_INSTANCE}}
dbName: {{NAME}}
users:
- {{DB_USER}}
endef
credentials: $(GOOGLE_CREDENTIALS_SA_KEY) project
kubectl create secret generic $(GOOGLE_PROVIDER_SECRET_NAME) --from-literal=GOOGLE_PROJECT=$(PROJECT) --from-file=GOOGLE_CREDENTIALS=$(GOOGLE_CREDENTIALS_SA_KEY)
### BEGIN Tests with CloudSQL instance ###
export TEST_CLOUDSQL
tests/db%-cloudsql-appdbinstance.yaml:
@mkdir -p tests
@echo "$${TEST_CLOUDSQL}" | \
sed -e "s/{{NAME}}/db$*-cloudsql/g" \
> $@
export TEST_CLOUDSQL_DESTROY
tests/db%-cloudsql-tfdestroy.yaml: backend_bucket
@mkdir -p tests
@echo "$${TEST_CLOUDSQL_DESTROY}" | \
sed -e "s/{{NAME}}/appdbi-db$*-cloudsql/g" \
-e "s/{{SRC_TFAPPLY}}/appdbi-db$*-cloudsql/g" \
-e "s/{{BACKEND_BUCKET}}/$(BACKEND_BUCKET)/g" \
-e "s/{{BACKEND_PREFIX}}/terraform/g" \
-e "s/{{GOOGLE_PROVIDER_SECRET_NAME}}/$(GOOGLE_PROVIDER_SECRET_NAME)/g" \
>$@
export TEST_CLOUDSQL_DESTROY
tests/db1-app%-appdb-tfdestroy.yaml: backend_bucket
@mkdir -p tests
@echo "$${TEST_CLOUDSQL_DESTROY}" | \
sed -e "s/{{NAME}}/appdb-db1-cloudsql-app$*/g" \
-e "s/{{SRC_TFAPPLY}}/appdb-db1-cloudsql-app$*/g" \
-e "s/{{BACKEND_BUCKET}}/$(BACKEND_BUCKET)/g" \
-e "s/{{BACKEND_PREFIX}}/terraform/g" \
-e "s/{{GOOGLE_PROVIDER_SECRET_NAME}}/$(GOOGLE_PROVIDER_SECRET_NAME)/g" \
>$@
export TEST_APPDB
tests/db1-app%-appdb.yaml:
@mkdir -p tests
@echo "$${TEST_APPDB}" | \
sed -e "s/{{NAME}}/app$*/g" \
-e "s/{{APPDB_INSTANCE}}/db1-cloudsql/g" \
-e "s/{{DB_USER}}/app$*-dbuser/g" \
> $@
### END Tests with CloudSQL instance ###
test-artifacts: $(addprefix tests/,$(TEST_ARTIFACTS))
test: $(addprefix tests/,$(TEST_ARTIFACTS))
-@for f in $^; do kubectl apply -f $$f; done
test-stop: $(addprefix tests/,$(TEST_ARTIFACTS))
-@for f in $^; do kubectl delete -f $$f; done
test-clean: $(addprefix tests/,$(TEST_ARTIFACTS))
rm -f $^