Skip to content

Commit cabd612

Browse files
authored
CLOUDP-355309: (openapi2crd) Connection Secret plugin (#2842)
1 parent aa0d87a commit cabd612

File tree

13 files changed

+904
-717
lines changed

13 files changed

+904
-717
lines changed

tools/openapi2crd/Makefile

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,40 @@
1-
.PHONY: generate
2-
generate:
3-
hack/generate.sh
1+
# Define the output binary location
2+
BINARY_DIR := bin
3+
BINARY_NAME := openapi2crd
4+
BINARY_PATH := $(BINARY_DIR)/$(BINARY_NAME)
5+
# Define the generated CRD file
6+
CRD_FILE := crds.yaml
7+
# Go source files (excluding vendor)
8+
GO_FILES := $(shell find . -name '*.go' -not -path './vendor/*')
9+
# Go packages for testing
10+
PACKAGES := $(shell go list ./...)
411

5-
.PHONY: crds
6-
crds:
7-
go run main.go --config config.yaml --output crds.yaml
12+
crds: ## Generate CRDs from config file
13+
@echo "==> Generating CRDs..."
14+
@go run main.go --config config.yaml --output $(CRD_FILE)
815

9-
build:
10-
go build -o bin/openapi2crd main.go
16+
build: $(BINARY_PATH) ## Build the binary
17+
18+
$(BINARY_PATH): $(GO_FILES) ## File-based build target.
19+
@echo "==> Building $(BINARY_PATH)..."
20+
@mkdir -p $(BINARY_DIR)
21+
@go build -o $(BINARY_PATH) main.go
22+
23+
fmt: ## Format all Go code
24+
@echo "==> Formatting code..."
25+
@gci write -s standard -s default -s localmodule .
26+
27+
unit-test: ## Run unit tests with race detection and coverage
28+
@echo "==> Running unit tests..."
29+
@go test -race -cover $(GO_TEST_FLAGS) $(PACKAGES)
30+
31+
gen-mock: ## Generate mocks for interfaces
32+
@echo "==> Generating mocks..."
33+
@mockery --config .mockery.yaml
34+
35+
all: gen-mock fmt unit-test build
36+
37+
clean: ## Clean up built artifacts
38+
@echo "==> Cleaning..."
39+
@rm -f $(BINARY_PATH)
40+
@rm -f $(CRD_FILE)

tools/openapi2crd/config.yaml

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ spec:
2424
- base
2525
- major_version
2626
- parameters
27+
- connection_secret
28+
- mutual_exclusive_group
2729
- entry
2830
- status
2931
- sensitive_properties
@@ -37,9 +39,7 @@ spec:
3739

3840
openapi:
3941
- name: v20250312
40-
package: go.mongodb.org/atlas-sdk/v20250312005/admin
41-
- name: v20250313
42-
package: go.mongodb.org/atlas-sdk/v20250312006/admin
42+
package: go.mongodb.org/atlas-sdk/v20250312008/admin
4343

4444
crd:
4545
- gvk:
@@ -62,17 +62,6 @@ spec:
6262
skipProperties:
6363
- $.apiKey
6464
- $.organization.links
65-
- majorVersion: v20250313
66-
openAPIRef:
67-
name: v20250313
68-
entry:
69-
schema: "CreateOrganizationRequest"
70-
status:
71-
schema: "CreateOrganizationResponse"
72-
filters:
73-
skipProperties:
74-
- $.apiKey
75-
- $.organization.links
7665
- gvk:
7766
version: v1
7867
kind: Group

tools/openapi2crd/go.mod

Lines changed: 97 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,105 +4,145 @@ go 1.25
44

55
toolchain go1.25.3
66

7+
tool (
8+
github.com/daixiang0/gci
9+
github.com/vektra/mockery/v2
10+
)
11+
712
require (
813
github.com/getkin/kin-openapi v0.131.0
914
github.com/goccy/go-yaml v1.18.0
10-
github.com/google/go-cmp v0.6.0
1115
github.com/pkg/errors v0.9.1
12-
github.com/spf13/afero v1.6.0
16+
github.com/spf13/afero v1.12.0
1317
github.com/spf13/cobra v1.8.1
14-
github.com/spf13/viper v1.9.0
15-
github.com/stoewer/go-strcase v1.3.0
16-
github.com/stretchr/testify v1.10.0
17-
go.mongodb.org/atlas-sdk/v20250312005 v20250312005.0.0
18-
k8s.io/api v0.32.3
19-
k8s.io/apiextensions-apiserver v0.32.3
20-
k8s.io/apimachinery v0.32.3
21-
k8s.io/client-go v0.32.3
22-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
18+
github.com/spf13/viper v1.20.1
19+
github.com/stoewer/go-strcase v1.3.1
20+
github.com/stretchr/testify v1.11.1
21+
go.mongodb.org/atlas-sdk/v20250312008 v20250312008.0.0
22+
k8s.io/api v0.32.9
23+
k8s.io/apiextensions-apiserver v0.32.9
24+
k8s.io/apimachinery v0.32.9
25+
k8s.io/client-go v0.32.9
26+
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
2327
sigs.k8s.io/yaml v1.4.0
2428
)
2529

2630
require (
27-
cel.dev/expr v0.18.0 // indirect
28-
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
29-
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
31+
cel.dev/expr v0.19.3 // indirect
32+
github.com/NYTimes/gziphandler v1.1.1 // indirect
33+
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
34+
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
3035
github.com/beorn7/perks v1.0.1 // indirect
3136
github.com/blang/semver/v4 v4.0.0 // indirect
3237
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
3338
github.com/cespare/xxhash/v2 v2.3.0 // indirect
39+
github.com/chigopher/pathlib v0.19.1 // indirect
40+
github.com/coreos/go-semver v0.3.1 // indirect
41+
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
42+
github.com/daixiang0/gci v0.13.7 // indirect
3443
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
44+
github.com/emicklei/go-restful/v3 v3.11.3 // indirect
3545
github.com/felixge/httpsnoop v1.0.4 // indirect
36-
github.com/fsnotify/fsnotify v1.7.0 // indirect
37-
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
38-
github.com/go-logr/logr v1.4.2 // indirect
46+
github.com/fsnotify/fsnotify v1.8.0 // indirect
47+
github.com/fxamacker/cbor/v2 v2.7.1 // indirect
48+
github.com/go-logr/logr v1.4.3 // indirect
3949
github.com/go-logr/stdr v1.2.2 // indirect
40-
github.com/go-openapi/jsonpointer v0.21.0 // indirect
41-
github.com/go-openapi/jsonreference v0.20.2 // indirect
42-
github.com/go-openapi/swag v0.23.0 // indirect
50+
github.com/go-openapi/jsonpointer v0.21.2 // indirect
51+
github.com/go-openapi/jsonreference v0.20.5 // indirect
52+
github.com/go-openapi/swag v0.23.1 // indirect
53+
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
4354
github.com/gogo/protobuf v1.3.2 // indirect
4455
github.com/golang/protobuf v1.5.4 // indirect
45-
github.com/google/cel-go v0.22.0 // indirect
46-
github.com/google/gnostic-models v0.6.8 // indirect
56+
github.com/google/btree v1.0.1 // indirect
57+
github.com/google/cel-go v0.22.1 // indirect
58+
github.com/google/gnostic-models v0.7.0 // indirect
59+
github.com/google/go-cmp v0.7.0 // indirect
4760
github.com/google/gofuzz v1.2.0 // indirect
4861
github.com/google/uuid v1.6.0 // indirect
62+
github.com/gorilla/websocket v1.5.3 // indirect
63+
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
4964
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
50-
github.com/hashicorp/hcl v1.0.0 // indirect
65+
github.com/hexops/gotextdiff v1.0.3 // indirect
66+
github.com/huandu/xstrings v1.4.0 // indirect
67+
github.com/iancoleman/strcase v0.3.0 // indirect
5168
github.com/inconshreveable/mousetrap v1.1.0 // indirect
69+
github.com/jinzhu/copier v0.4.0 // indirect
5270
github.com/josharian/intern v1.0.0 // indirect
5371
github.com/json-iterator/go v1.1.12 // indirect
54-
github.com/magiconair/properties v1.8.5 // indirect
55-
github.com/mailru/easyjson v0.7.7 // indirect
56-
github.com/mitchellh/mapstructure v1.4.2 // indirect
72+
github.com/mailru/easyjson v0.9.1 // indirect
73+
github.com/mattn/go-colorable v0.1.14 // indirect
74+
github.com/mattn/go-isatty v0.0.20 // indirect
75+
github.com/mitchellh/go-homedir v1.1.0 // indirect
76+
github.com/mitchellh/mapstructure v1.5.0 // indirect
77+
github.com/moby/spdystream v0.5.0 // indirect
5778
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
5879
github.com/modern-go/reflect2 v1.0.2 // indirect
5980
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
6081
github.com/mongodb-forks/digest v1.1.0 // indirect
6182
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
83+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
6284
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect
6385
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect
64-
github.com/pelletier/go-toml v1.9.4 // indirect
86+
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
6587
github.com/perimeterx/marshmallow v1.1.5 // indirect
6688
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
6789
github.com/prometheus/client_golang v1.19.1 // indirect
68-
github.com/prometheus/client_model v0.6.1 // indirect
90+
github.com/prometheus/client_model v0.6.2 // indirect
6991
github.com/prometheus/common v0.55.0 // indirect
7092
github.com/prometheus/procfs v0.15.1 // indirect
71-
github.com/spf13/cast v1.4.1 // indirect
72-
github.com/spf13/jwalterweatherman v1.1.0 // indirect
73-
github.com/spf13/pflag v1.0.5 // indirect
93+
github.com/rs/zerolog v1.33.0 // indirect
94+
github.com/sagikazarmark/locafero v0.7.0 // indirect
95+
github.com/sourcegraph/conc v0.3.0 // indirect
96+
github.com/spf13/cast v1.7.1 // indirect
97+
github.com/spf13/pflag v1.0.10 // indirect
7498
github.com/stretchr/objx v0.5.2 // indirect
75-
github.com/subosito/gotenv v1.2.0 // indirect
99+
github.com/subosito/gotenv v1.6.0 // indirect
100+
github.com/vektra/mockery/v2 v2.53.5 // indirect
76101
github.com/x448/float16 v0.8.4 // indirect
77-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
78-
go.opentelemetry.io/otel v1.28.0 // indirect
102+
go.etcd.io/etcd/api/v3 v3.5.24 // indirect
103+
go.etcd.io/etcd/client/pkg/v3 v3.5.24 // indirect
104+
go.etcd.io/etcd/client/v3 v3.5.24 // indirect
105+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
106+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
107+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
108+
go.opentelemetry.io/otel v1.34.0 // indirect
79109
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect
80110
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 // indirect
81-
go.opentelemetry.io/otel/metric v1.28.0 // indirect
82-
go.opentelemetry.io/otel/sdk v1.28.0 // indirect
83-
go.opentelemetry.io/otel/trace v1.28.0 // indirect
111+
go.opentelemetry.io/otel/metric v1.34.0 // indirect
112+
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
113+
go.opentelemetry.io/otel/trace v1.34.0 // indirect
84114
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
85-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
86-
golang.org/x/net v0.39.0 // indirect
87-
golang.org/x/oauth2 v0.30.0 // indirect
88-
golang.org/x/sync v0.13.0 // indirect
89-
golang.org/x/sys v0.32.0 // indirect
90-
golang.org/x/term v0.31.0 // indirect
91-
golang.org/x/text v0.24.0 // indirect
92-
golang.org/x/time v0.7.0 // indirect
93-
google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 // indirect
94-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect
95-
google.golang.org/grpc v1.65.0 // indirect
96-
google.golang.org/protobuf v1.35.1 // indirect
115+
go.uber.org/multierr v1.11.0 // indirect
116+
go.uber.org/zap v1.27.0 // indirect
117+
go.yaml.in/yaml/v2 v2.4.3 // indirect
118+
go.yaml.in/yaml/v3 v3.0.4 // indirect
119+
golang.org/x/crypto v0.43.0 // indirect
120+
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
121+
golang.org/x/mod v0.29.0 // indirect
122+
golang.org/x/net v0.46.0 // indirect
123+
golang.org/x/oauth2 v0.31.0 // indirect
124+
golang.org/x/sync v0.17.0 // indirect
125+
golang.org/x/sys v0.37.0 // indirect
126+
golang.org/x/term v0.36.0 // indirect
127+
golang.org/x/text v0.30.0 // indirect
128+
golang.org/x/time v0.8.0 // indirect
129+
golang.org/x/tools v0.38.0 // indirect
130+
google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect
131+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect
132+
google.golang.org/grpc v1.71.3 // indirect
133+
google.golang.org/protobuf v1.36.10 // indirect
134+
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
97135
gopkg.in/inf.v0 v0.9.1 // indirect
98-
gopkg.in/ini.v1 v1.63.2 // indirect
99-
gopkg.in/yaml.v2 v2.4.0 // indirect
136+
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
100137
gopkg.in/yaml.v3 v3.0.1 // indirect
101-
k8s.io/apiserver v0.32.3 // indirect
102-
k8s.io/component-base v0.32.3 // indirect
138+
k8s.io/apiserver v0.32.9 // indirect
139+
k8s.io/component-base v0.32.9 // indirect
103140
k8s.io/klog/v2 v2.130.1 // indirect
104-
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
105-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect
106-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
107-
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
141+
k8s.io/kms v0.32.9 // indirect
142+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
143+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.3 // indirect
144+
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
145+
sigs.k8s.io/randfill v1.0.0 // indirect
146+
sigs.k8s.io/structured-merge-diff/v4 v4.4.3 // indirect
147+
sigs.k8s.io/structured-merge-diff/v6 v6.2.0 // indirect
108148
)

0 commit comments

Comments
 (0)