Skip to content

Commit 20a209e

Browse files
committed
registry+v1: support webhooks, add simple converter CLI
1 parent a3946d2 commit 20a209e

File tree

20 files changed

+2580
-821
lines changed

20 files changed

+2580
-821
lines changed

cmd/registryv1-to-helm/main.go

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/spf13/cobra"
9+
"helm.sh/helm/v3/pkg/chartutil"
10+
11+
"github.com/operator-framework/operator-controller/internal/features"
12+
"github.com/operator-framework/operator-controller/internal/rukpak/convert"
13+
)
14+
15+
func main() {
16+
if err := rootCmd().Execute(); err != nil {
17+
os.Exit(1)
18+
}
19+
}
20+
21+
func rootCmd() *cobra.Command {
22+
cmd := &cobra.Command{
23+
Use: "registryv1-to-helm <registry+v1-directory-path> [output-path]",
24+
Args: cobra.RangeArgs(1, 2),
25+
Run: func(cmd *cobra.Command, args []string) {
26+
registryv1Path := args[0]
27+
28+
saveDir := "."
29+
if len(args) == 2 {
30+
saveDir = args[1]
31+
}
32+
33+
chrt, err := convert.RegistryV1ToHelmChart(cmd.Context(), os.DirFS(registryv1Path))
34+
if err != nil {
35+
fmt.Fprintf(os.Stderr, "failed to convert registry v1 to helm chart: %v\n", err)
36+
os.Exit(1)
37+
}
38+
39+
if err := chartutil.SaveDir(chrt, saveDir); err != nil {
40+
fmt.Fprintf(os.Stderr, "failed to write helm chart to directory: %v\n", err)
41+
os.Exit(1)
42+
}
43+
44+
origChartDir := filepath.Join(saveDir, chrt.Metadata.Name)
45+
desiredChartDir := filepath.Join(saveDir, fmt.Sprintf("%s-%s", chrt.Metadata.Name, chrt.Metadata.Version))
46+
if err := os.Rename(origChartDir, desiredChartDir); err != nil {
47+
fmt.Fprintf(os.Stderr, "failed to rename helm chart directory: %v\n", err)
48+
os.Exit(1)
49+
}
50+
cmd.Printf("Chart saved to %s\n", desiredChartDir)
51+
},
52+
}
53+
features.OperatorControllerFeatureGate.AddFlag(cmd.Flags())
54+
return cmd
55+
}

cmd/registryv1-to-helm/values.yaml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
affinity:
2+
nodeAffinity:
3+
requiredDuringSchedulingIgnoredDuringExecution:
4+
nodeSelectorTerms:
5+
- matchExpressions:
6+
- key: node-role.kubernetes.io/master
7+
operator: Exists
8+
nodeSelector:
9+
overrideKey1: overrideValue1
10+
11+
selector:
12+
overrideKey2: overrideValue2
13+
14+
tolerations:
15+
- effect: NoSchedule
16+
key: node-role.kubernetes.io/master2
17+
18+
volumes:
19+
- name: argocd-operator-token-5z5z2
20+
emptyDir: {}
21+
22+
env:
23+
- name: WATCH_NAMESPACE
24+
value: BAR
25+
26+
envFrom:
27+
- configMapRef:
28+
name: my-configmap
29+
- secretRef:
30+
name: my-secret
31+
32+
resources:
33+
requests:
34+
cpu: 100m
35+
memory: 100Mi
36+
37+
volumeMounts:
38+
- name: tmp
39+
mountPath: override

go.mod

+15-33
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ require (
77
github.com/BurntSushi/toml v1.4.0
88
github.com/Masterminds/semver/v3 v3.3.1
99
github.com/blang/semver/v4 v4.0.0
10+
github.com/cert-manager/cert-manager v1.16.1
1011
github.com/containerd/containerd v1.7.24
1112
github.com/containers/image/v5 v5.32.2
1213
github.com/fsnotify/fsnotify v1.8.0
1314
github.com/go-logr/logr v1.4.2
15+
github.com/go-openapi/spec v0.21.0
1416
github.com/google/go-cmp v0.6.0
1517
github.com/google/go-containerregistry v0.20.2
16-
github.com/onsi/ginkgo/v2 v2.22.0
17-
github.com/onsi/gomega v1.36.0
18+
github.com/joeycumines/go-dotnotation v0.0.0-20180131115956-2d3612e36c5d
1819
github.com/opencontainers/go-digest v1.0.0
1920
github.com/operator-framework/api v0.27.0
2021
github.com/operator-framework/catalogd v1.0.0
2122
github.com/operator-framework/helm-operator-plugins v0.7.0
2223
github.com/operator-framework/operator-registry v1.48.0
24+
github.com/spf13/cobra v1.8.1
2325
github.com/spf13/pflag v1.0.5
2426
github.com/stretchr/testify v1.10.0
2527
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
@@ -32,7 +34,7 @@ require (
3234
k8s.io/client-go v0.31.3
3335
k8s.io/component-base v0.31.2
3436
k8s.io/klog/v2 v2.130.1
35-
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
37+
k8s.io/utils v0.0.0-20240921022957-49e7df575cb6
3638
sigs.k8s.io/controller-runtime v0.19.0
3739
sigs.k8s.io/yaml v1.4.0
3840
)
@@ -50,22 +52,16 @@ require (
5052
github.com/Microsoft/hcsshim v0.12.5 // indirect
5153
github.com/VividCortex/ewma v1.2.0 // indirect
5254
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
53-
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
5455
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
5556
github.com/beorn7/perks v1.0.1 // indirect
56-
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
5757
github.com/cespare/xxhash/v2 v2.3.0 // indirect
5858
github.com/chai2010/gettext-go v1.0.2 // indirect
5959
github.com/containerd/cgroups/v3 v3.0.3 // indirect
60-
github.com/containerd/containerd/api v1.7.19 // indirect
6160
github.com/containerd/continuity v0.4.2 // indirect
6261
github.com/containerd/errdefs v0.3.0 // indirect
6362
github.com/containerd/log v0.1.0 // indirect
6463
github.com/containerd/platforms v0.2.1 // indirect
6564
github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect
66-
github.com/containerd/ttrpc v1.2.5 // indirect
67-
github.com/containerd/typeurl/v2 v2.1.1 // indirect
68-
github.com/containers/common v0.60.4 // indirect
6965
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
7066
github.com/containers/ocicrypt v1.2.0 // indirect
7167
github.com/containers/storage v1.55.0 // indirect
@@ -83,11 +79,11 @@ require (
8379
github.com/docker/go-connections v0.5.0 // indirect
8480
github.com/docker/go-metrics v0.0.1 // indirect
8581
github.com/docker/go-units v0.5.0 // indirect
86-
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
82+
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
8783
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
8884
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
8985
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
90-
github.com/fatih/color v1.15.0 // indirect
86+
github.com/fatih/color v1.16.0 // indirect
9187
github.com/felixge/httpsnoop v1.0.4 // indirect
9288
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
9389
github.com/go-errors/errors v1.4.2 // indirect
@@ -103,27 +99,22 @@ require (
10399
github.com/go-openapi/jsonreference v0.21.0 // indirect
104100
github.com/go-openapi/loads v0.22.0 // indirect
105101
github.com/go-openapi/runtime v0.28.0 // indirect
106-
github.com/go-openapi/spec v0.21.0 // indirect
107102
github.com/go-openapi/strfmt v0.23.0 // indirect
108103
github.com/go-openapi/swag v0.23.0 // indirect
109104
github.com/go-openapi/validate v0.24.0 // indirect
110-
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
111105
github.com/gobwas/glob v0.2.3 // indirect
112106
github.com/gogo/protobuf v1.3.2 // indirect
113107
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
114108
github.com/golang/protobuf v1.5.4 // indirect
115109
github.com/google/btree v1.1.2 // indirect
116-
github.com/google/cel-go v0.20.1 // indirect
117110
github.com/google/gnostic-models v0.6.8 // indirect
118111
github.com/google/gofuzz v1.2.0 // indirect
119-
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
120112
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
121113
github.com/google/uuid v1.6.0 // indirect
122114
github.com/gorilla/mux v1.8.1 // indirect
123-
github.com/gorilla/websocket v1.5.0 // indirect
115+
github.com/gorilla/websocket v1.5.1 // indirect
124116
github.com/gosuri/uitable v0.0.4 // indirect
125117
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
126-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
127118
github.com/h2non/filetype v1.1.3 // indirect
128119
github.com/h2non/go-is-svg v0.0.0-20160927212452-35e8c4b0612c // indirect
129120
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -170,11 +161,12 @@ require (
170161
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
171162
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
172163
github.com/oklog/ulid v1.3.1 // indirect
164+
github.com/onsi/ginkgo/v2 v2.22.0 // indirect
165+
github.com/onsi/gomega v1.36.0 // indirect
173166
github.com/opencontainers/image-spec v1.1.0 // indirect
174167
github.com/opencontainers/runtime-spec v1.2.0 // indirect
175168
github.com/openshift/crd-schema-checker v0.0.0-20240404194209-35a9033b1d11 // indirect
176169
github.com/operator-framework/operator-lib v0.15.0 // indirect
177-
github.com/otiai10/copy v1.14.0 // indirect
178170
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
179171
github.com/pkg/errors v0.9.1 // indirect
180172
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
@@ -193,9 +185,7 @@ require (
193185
github.com/sigstore/sigstore v1.8.4 // indirect
194186
github.com/sirupsen/logrus v1.9.3 // indirect
195187
github.com/spf13/cast v1.7.0 // indirect
196-
github.com/spf13/cobra v1.8.1 // indirect
197188
github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 // indirect
198-
github.com/stoewer/go-strcase v1.3.0 // indirect
199189
github.com/stretchr/objx v0.5.2 // indirect
200190
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
201191
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
@@ -209,43 +199,35 @@ require (
209199
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
210200
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
211201
github.com/xlab/treeprint v1.2.0 // indirect
212-
go.etcd.io/bbolt v1.3.11 // indirect
213202
go.mongodb.org/mongo-driver v1.14.0 // indirect
214203
go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 // indirect
215204
go.opencensus.io v0.24.0 // indirect
216205
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
217206
go.opentelemetry.io/otel v1.29.0 // indirect
218-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect
219-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 // indirect
220207
go.opentelemetry.io/otel/metric v1.29.0 // indirect
221-
go.opentelemetry.io/otel/sdk v1.29.0 // indirect
222208
go.opentelemetry.io/otel/trace v1.29.0 // indirect
223-
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
224209
go.starlark.net v0.0.0-20230612165344-9532f5667272 // indirect
225210
golang.org/x/crypto v0.28.0 // indirect
226211
golang.org/x/net v0.30.0 // indirect
227-
golang.org/x/oauth2 v0.22.0 // indirect
212+
golang.org/x/oauth2 v0.23.0 // indirect
228213
golang.org/x/sync v0.8.0 // indirect
229214
golang.org/x/sys v0.26.0 // indirect
230215
golang.org/x/term v0.25.0 // indirect
231216
golang.org/x/text v0.19.0 // indirect
232-
golang.org/x/time v0.5.0 // indirect
233-
golang.org/x/tools v0.26.0 // indirect
217+
golang.org/x/time v0.6.0 // indirect
234218
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
235-
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
236-
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
237-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
219+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
238220
google.golang.org/grpc v1.67.1 // indirect
239221
google.golang.org/protobuf v1.35.1 // indirect
240222
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
241223
gopkg.in/inf.v0 v0.9.1 // indirect
242224
gopkg.in/warnings.v0 v0.1.2 // indirect
243225
gopkg.in/yaml.v3 v3.0.1 // indirect
244226
k8s.io/apiserver v0.31.2 // indirect
245-
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
227+
k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect
246228
k8s.io/kubectl v0.31.1 // indirect
247229
oras.land/oras-go v1.2.5 // indirect
248-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 // indirect
230+
sigs.k8s.io/gateway-api v1.1.0 // indirect
249231
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
250232
sigs.k8s.io/kustomize/api v0.17.2 // indirect
251233
sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect

0 commit comments

Comments
 (0)