Skip to content

Commit af63ae0

Browse files
committed
[cozystack-operator] Add Package and PackageSource reconcilers
Signed-off-by: Andrei Kvapil <[email protected]>
1 parent 2990f05 commit af63ae0

8 files changed

Lines changed: 1506 additions & 7 deletions

File tree

‎api/v1alpha1/package_types.go‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,15 @@ type PackageStatus struct {
8686
// Conditions represents the latest available observations of a Package's state
8787
// +optional
8888
Conditions []metav1.Condition `json:"conditions,omitempty"`
89+
90+
// Dependencies tracks the readiness status of each dependency
91+
// Key is the dependency package name, value indicates if the dependency is ready
92+
// +optional
93+
Dependencies map[string]DependencyStatus `json:"dependencies,omitempty"`
94+
}
95+
96+
// DependencyStatus represents the readiness status of a dependency
97+
type DependencyStatus struct {
98+
// Ready indicates whether the dependency is ready
99+
Ready bool `json:"ready"`
89100
}

‎api/v1alpha1/zz_generated.deepcopy.go‎

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎cmd/cozystack-operator/main.go‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131

3232
cozyv1alpha1 "github.com/cozystack/cozystack/api/v1alpha1"
3333
helmv2 "github.com/fluxcd/helm-controller/api/v2"
34+
sourcev1 "github.com/fluxcd/source-controller/api/v1"
35+
sourcewatcherv1beta1 "github.com/fluxcd/source-watcher/api/v2/v1beta1"
3436
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3537
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3638
"k8s.io/apimachinery/pkg/runtime"
@@ -45,6 +47,7 @@ import (
4547
"sigs.k8s.io/controller-runtime/pkg/webhook"
4648

4749
"github.com/cozystack/cozystack/internal/fluxinstall"
50+
"github.com/cozystack/cozystack/internal/operator"
4851
// +kubebuilder:scaffold:imports
4952
)
5053

@@ -58,6 +61,8 @@ func init() {
5861
utilruntime.Must(apiextensionsv1.AddToScheme(scheme))
5962
utilruntime.Must(cozyv1alpha1.AddToScheme(scheme))
6063
utilruntime.Must(helmv2.AddToScheme(scheme))
64+
utilruntime.Must(sourcev1.AddToScheme(scheme))
65+
utilruntime.Must(sourcewatcherv1beta1.AddToScheme(scheme))
6166
// +kubebuilder:scaffold:scheme
6267
}
6368

@@ -155,6 +160,24 @@ func main() {
155160
}
156161
}
157162

163+
// Setup PackageSource reconciler
164+
if err := (&operator.PackageSourceReconciler{
165+
Client: mgr.GetClient(),
166+
Scheme: mgr.GetScheme(),
167+
}).SetupWithManager(mgr); err != nil {
168+
setupLog.Error(err, "unable to create controller", "controller", "PackageSource")
169+
os.Exit(1)
170+
}
171+
172+
// Setup Package reconciler
173+
if err := (&operator.PackageReconciler{
174+
Client: mgr.GetClient(),
175+
Scheme: mgr.GetScheme(),
176+
}).SetupWithManager(mgr); err != nil {
177+
setupLog.Error(err, "unable to create controller", "controller", "Package")
178+
os.Exit(1)
179+
}
180+
158181
// +kubebuilder:scaffold:builder
159182

160183
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {

‎go.mod‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ go 1.25.0
66

77
require (
88
github.com/fluxcd/helm-controller/api v1.4.3
9+
github.com/fluxcd/source-controller/api v1.7.4
10+
github.com/fluxcd/source-watcher/api/v2 v2.0.3
911
github.com/go-logr/logr v1.4.3
1012
github.com/go-logr/zapr v1.3.0
1113
github.com/google/gofuzz v1.2.0
@@ -18,14 +20,14 @@ require (
1820
gopkg.in/yaml.v2 v2.4.0
1921
k8s.io/api v0.34.1
2022
k8s.io/apiextensions-apiserver v0.34.1
21-
k8s.io/apimachinery v0.34.1
23+
k8s.io/apimachinery v0.34.2
2224
k8s.io/apiserver v0.34.1
2325
k8s.io/client-go v0.34.1
2426
k8s.io/component-base v0.34.1
2527
k8s.io/klog/v2 v2.130.1
2628
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b
2729
k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d
28-
sigs.k8s.io/controller-runtime v0.22.2
30+
sigs.k8s.io/controller-runtime v0.22.4
2931
sigs.k8s.io/structured-merge-diff/v4 v4.7.0
3032
)
3133

@@ -44,8 +46,9 @@ require (
4446
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
4547
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
4648
github.com/felixge/httpsnoop v1.0.4 // indirect
49+
github.com/fluxcd/pkg/apis/acl v0.9.0 // indirect
4750
github.com/fluxcd/pkg/apis/kustomize v1.13.0 // indirect
48-
github.com/fluxcd/pkg/apis/meta v1.22.0 // indirect
51+
github.com/fluxcd/pkg/apis/meta v1.23.0 // indirect
4952
github.com/fsnotify/fsnotify v1.9.0 // indirect
5053
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
5154
github.com/go-logr/stdr v1.2.2 // indirect

‎go.sum‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,16 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2
3737
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
3838
github.com/fluxcd/helm-controller/api v1.4.3 h1:CdZwjL1liXmYCWyk2jscmFEB59tICIlnWB9PfDDW5q4=
3939
github.com/fluxcd/helm-controller/api v1.4.3/go.mod h1:0XrBhKEaqvxyDj/FziG1Q8Fmx2UATdaqLgYqmZh6wW4=
40+
github.com/fluxcd/pkg/apis/acl v0.9.0 h1:wBpgsKT+jcyZEcM//OmZr9RiF8klL3ebrDp2u2ThsnA=
41+
github.com/fluxcd/pkg/apis/acl v0.9.0/go.mod h1:TttNS+gocsGLwnvmgVi3/Yscwqrjc17+vhgYfqkfrV4=
4042
github.com/fluxcd/pkg/apis/kustomize v1.13.0 h1:GGf0UBVRIku+gebY944icVeEIhyg1P/KE3IrhOyJJnE=
4143
github.com/fluxcd/pkg/apis/kustomize v1.13.0/go.mod h1:TLKVqbtnzkhDuhWnAsN35977HvRfIjs+lgMuNro/LEc=
42-
github.com/fluxcd/pkg/apis/meta v1.22.0 h1:EHWQH5ZWml7i8eZ/AMjm1jxid3j/PQ31p+hIwCt6crM=
43-
github.com/fluxcd/pkg/apis/meta v1.22.0/go.mod h1:Kc1+bWe5p0doROzuV9XiTfV/oL3ddsemYXt8ZYWdVVg=
44+
github.com/fluxcd/pkg/apis/meta v1.23.0 h1:fLis5YcHnOsyKYptzBtituBm5EWNx13I0bXQsy0FG4s=
45+
github.com/fluxcd/pkg/apis/meta v1.23.0/go.mod h1:UWsIbBPCxYvoVklr2mV2uLFBf/n17dNAmKFjRfApdDo=
46+
github.com/fluxcd/source-controller/api v1.7.4 h1:+EOVnRA9LmLxOx7J273l7IOEU39m+Slt/nQGBy69ygs=
47+
github.com/fluxcd/source-controller/api v1.7.4/go.mod h1:ruf49LEgZRBfcP+eshl2n9SX1MfHayCcViAIGnZcaDY=
48+
github.com/fluxcd/source-watcher/api/v2 v2.0.3 h1:SsVGAaMBxzvcgrOz/Kl6c2ybMHVqoiEFwtI+bDuSeSs=
49+
github.com/fluxcd/source-watcher/api/v2 v2.0.3/go.mod h1:Nx3QZweVyuhaOtSNrw+oxifG+qrakPvjgNAN9qlUTb0=
4450
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
4551
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
4652
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
@@ -312,8 +318,8 @@ k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPG
312318
k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
313319
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
314320
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
315-
sigs.k8s.io/controller-runtime v0.22.2 h1:cK2l8BGWsSWkXz09tcS4rJh95iOLney5eawcK5A33r4=
316-
sigs.k8s.io/controller-runtime v0.22.2/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
321+
sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
322+
sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
317323
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
318324
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
319325
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=

0 commit comments

Comments
 (0)