@@ -39,6 +39,7 @@ const (
39
39
configMapVersionLabel = "provider.cluster.x-k8s.io/version"
40
40
configMapTypeLabel = "provider.cluster.x-k8s.io/type"
41
41
configMapNameLabel = "provider.cluster.x-k8s.io/name"
42
+ configMapSourceLabel = "provider.cluster.x-k8s.io/source"
42
43
operatorManagedLabel = "managed-by.operator.cluster.x-k8s.io"
43
44
44
45
compressedAnnotation = "provider.cluster.x-k8s.io/compressed"
@@ -48,6 +49,7 @@ const (
48
49
additionalManifestsConfigMapKey = "manifests"
49
50
50
51
maxConfigMapSize = 1 * 1024 * 1024
52
+ ociSource = "oci"
51
53
)
52
54
53
55
// downloadManifests downloads CAPI manifests from a url.
@@ -96,6 +98,12 @@ func (p *phaseReconciler) downloadManifests(ctx context.Context) (reconcile.Resu
96
98
p .provider .SetSpec (spec )
97
99
}
98
100
101
+ if p .provider .GetSpec ().FetchConfig .OCI != nil {
102
+ err := p .fetchOCI (ctx )
103
+
104
+ return reconcile.Result {}, wrapPhaseError (err , operatorv1 .ComponentsFetchErrorReason , operatorv1 .ProviderInstalledCondition )
105
+ }
106
+
99
107
// Fetch the provider metadata and components yaml files from the provided repository GitHub/GitLab.
100
108
metadataFile , err := repo .GetFile (ctx , spec .Version , metadataFile )
101
109
if err != nil {
@@ -113,7 +121,7 @@ func (p *phaseReconciler) downloadManifests(ctx context.Context) (reconcile.Resu
113
121
114
122
withCompression := needToCompress (metadataFile , componentsFile )
115
123
116
- if err := p .createManifestsConfigMap (ctx , metadataFile , componentsFile , withCompression ); err != nil {
124
+ if err := p .createManifestsConfigMap (ctx , p . prepareConfigMapLabels (), metadataFile , componentsFile , withCompression ); err != nil {
117
125
err = fmt .Errorf ("failed to create config map for provider %q: %w" , p .provider .GetName (), err )
118
126
119
127
return reconcile.Result {}, wrapPhaseError (err , operatorv1 .ComponentsFetchErrorReason , operatorv1 .ProviderInstalledCondition )
@@ -149,14 +157,14 @@ func (p *phaseReconciler) prepareConfigMapLabels() map[string]string {
149
157
}
150
158
151
159
// createManifestsConfigMap creates a config map with downloaded manifests.
152
- func (p * phaseReconciler ) createManifestsConfigMap (ctx context.Context , metadata , components []byte , compress bool ) error {
160
+ func (p * phaseReconciler ) createManifestsConfigMap (ctx context.Context , labels map [ string ] string , metadata , components []byte , compress bool ) error {
153
161
configMapName := fmt .Sprintf ("%s-%s-%s" , p .provider .GetType (), p .provider .GetName (), p .provider .GetSpec ().Version )
154
162
155
163
configMap := & corev1.ConfigMap {
156
164
ObjectMeta : metav1.ObjectMeta {
157
165
Name : configMapName ,
158
166
Namespace : p .provider .GetNamespace (),
159
- Labels : p . prepareConfigMapLabels () ,
167
+ Labels : labels ,
160
168
},
161
169
Data : map [string ]string {
162
170
metadataConfigMapKey : string (metadata ),
@@ -211,12 +219,18 @@ func providerLabelSelector(provider operatorv1.GenericProvider) *metav1.LabelSel
211
219
return provider .GetSpec ().FetchConfig .Selector
212
220
}
213
221
222
+ if provider .GetSpec ().FetchConfig != nil && provider .GetSpec ().FetchConfig .OCI != nil {
223
+ return & metav1.LabelSelector {
224
+ MatchLabels : ociLabels (provider ),
225
+ }
226
+ }
227
+
214
228
return & metav1.LabelSelector {
215
229
MatchLabels : providerLabels (provider ),
216
230
}
217
231
}
218
232
219
- // prepareConfigMapLabels returns default set of labels that identify a config map with downloaded manifests.
233
+ // providerLabels returns default set of labels that identify a config map with downloaded manifests.
220
234
func providerLabels (provider operatorv1.GenericProvider ) map [string ]string {
221
235
return map [string ]string {
222
236
configMapVersionLabel : provider .GetSpec ().Version ,
@@ -226,6 +240,17 @@ func providerLabels(provider operatorv1.GenericProvider) map[string]string {
226
240
}
227
241
}
228
242
243
+ // ociLabels returns default set of labels that identify a config map created from OCI artifacts.
244
+ func ociLabels (provider operatorv1.GenericProvider ) map [string ]string {
245
+ return map [string ]string {
246
+ configMapVersionLabel : provider .GetSpec ().Version ,
247
+ configMapTypeLabel : provider .GetType (),
248
+ configMapNameLabel : provider .GetName (),
249
+ configMapSourceLabel : ociSource ,
250
+ operatorManagedLabel : "true" ,
251
+ }
252
+ }
253
+
229
254
// needToCompress checks whether the input data exceeds the maximum configmap
230
255
// size limit and returns whether it should be compressed.
231
256
func needToCompress (bs ... []byte ) bool {
0 commit comments