From 214b61b07f833f68459f9f7e446d3e1d22970d0b Mon Sep 17 00:00:00 2001 From: subhamkrai Date: Mon, 26 Jun 2023 13:41:37 +0530 Subject: [PATCH] operator-sdk: these are auto generated chagnes these are auto generated changes and this commits depends on pr on operator-sdk side to upgrade to controller runtime version 0.15 Signed-off-by: subhamkrai --- .../csi-addons.clusterserviceversion.yaml | 76 ++++++++ .../registry/fbcindex/configMapWriter.go | 173 ++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 config/manifests/bases/csi-addons.clusterserviceversion.yaml create mode 100644 tools/vendor/github.com/operator-framework/operator-sdk/internal/olm/operator/registry/fbcindex/configMapWriter.go diff --git a/config/manifests/bases/csi-addons.clusterserviceversion.yaml b/config/manifests/bases/csi-addons.clusterserviceversion.yaml new file mode 100644 index 000000000..ce31ccde5 --- /dev/null +++ b/config/manifests/bases/csi-addons.clusterserviceversion.yaml @@ -0,0 +1,76 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: '[]' + capabilities: Basic Install + olm.skipRange: "" + name: csi-addons.v0.1.1 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: CSIAddonsNode is the Schema for the csiaddonsnode API + displayName: CSIAddons Node + kind: CSIAddonsNode + name: csiaddonsnodes.csiaddons.openshift.io + version: v1alpha1 + - description: NetworkFence is the Schema for the networkfences API + displayName: Network Fence + kind: NetworkFence + name: networkfences.csiaddons.openshift.io + version: v1alpha1 + - description: ReclaimSpaceCronJob is the Schema for the reclaimspacecronjobs API + displayName: Reclaim Space CronJob + kind: ReclaimSpaceCronJob + name: reclaimspacecronjobs.csiaddons.openshift.io + version: v1alpha1 + - description: ReclaimSpaceJob is the Schema for the reclaimspacejobs API + displayName: Reclaim Space Job + kind: ReclaimSpaceJob + name: reclaimspacejobs.csiaddons.openshift.io + version: v1alpha1 + - description: VolumeReplicationClass is the Schema for the volumereplicationclasses API + displayName: Volume Replication Class + kind: VolumeReplicationClass + name: volumereplicationclasses.replication.storage.openshift.io + version: v1alpha1 + - description: VolumeReplication is the Schema for the volumereplications API + displayName: Volume Replication + kind: VolumeReplication + name: volumereplications.replication.storage.openshift.io + version: v1alpha1 + description: CSI Addons provides the CSI Addons Controller that enables advanced + storage operations for CSI-drivers. + displayName: CSI Addons + icon: + - base64data: "" + mediatype: "" + install: + spec: + deployments: null + strategy: "" + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - storage + - csi + links: + - name: CSI Addons + url: https://csi-addons.github.io + maintainers: + - email: csi-addons@redhat.com + name: CSI Addons Community + maturity: alpha + provider: + name: CSI Addons Community + version: 0.1.1 + replaces: "" diff --git a/tools/vendor/github.com/operator-framework/operator-sdk/internal/olm/operator/registry/fbcindex/configMapWriter.go b/tools/vendor/github.com/operator-framework/operator-sdk/internal/olm/operator/registry/fbcindex/configMapWriter.go new file mode 100644 index 000000000..b1511e9bc --- /dev/null +++ b/tools/vendor/github.com/operator-framework/operator-sdk/internal/olm/operator/registry/fbcindex/configMapWriter.go @@ -0,0 +1,173 @@ +// Copyright 2023 The Operator-SDK Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fbcindex + +import ( + "bytes" + "compress/gzip" + "fmt" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + yamlSeparator = "\n---\n" + gzipSuffixLength = 13 + maxGZIPLength = maxConfigMapSize - gzipSuffixLength + + ConfigMapEncodingAnnotationKey = "olm.contentEncoding" + ConfigMapEncodingAnnotationGzip = "gzip+base64" +) + +/* +This file implements the actual building of the CM list. It uses the template method design pattern to implement both +regular string VM, and compressed binary CM. + +The method itself is FBCRegistryPod.getConfigMaps. This file contains the actual implementation of the writing actions, +used by the method. +*/ + +type configMapWriter interface { + reset() + newConfigMap(string) *corev1.ConfigMap + getFilePath() string + isEmpty() bool + exceedMaxLength(cmSize int, data string) (bool, error) + closeCM(cm *corev1.ConfigMap) error + addData(data string) error + continueAddData(data string) error + writeLastFragment(cm *corev1.ConfigMap) error +} + +type gzipCMWriter struct { + actualBuff *bytes.Buffer + helperBuff *bytes.Buffer + actualWriter *gzip.Writer + helperWriter *gzip.Writer + cmName string + namespace string +} + +func newGZIPWriter(name, namespace string) *gzipCMWriter { + actualBuff := &bytes.Buffer{} + helperBuff := &bytes.Buffer{} + + return &gzipCMWriter{ + actualBuff: actualBuff, + helperBuff: helperBuff, + actualWriter: gzip.NewWriter(actualBuff), + helperWriter: gzip.NewWriter(helperBuff), + cmName: name, + namespace: namespace, + } +} + +func (cmw *gzipCMWriter) reset() { + cmw.actualBuff.Reset() + cmw.actualWriter.Reset(cmw.actualBuff) + cmw.helperBuff.Reset() + cmw.helperWriter.Reset(cmw.helperBuff) +} + +func (cmw *gzipCMWriter) newConfigMap(name string) *corev1.ConfigMap { + return &corev1.ConfigMap{ + TypeMeta: metav1.TypeMeta{ + APIVersion: corev1.SchemeGroupVersion.String(), + Kind: "ConfigMap", + }, + ObjectMeta: metav1.ObjectMeta{ + Namespace: cmw.namespace, + Name: name, + Annotations: map[string]string{ + ConfigMapEncodingAnnotationKey: ConfigMapEncodingAnnotationGzip, + }, + }, + BinaryData: map[string][]byte{}, + } +} + +func (cmw *gzipCMWriter) getFilePath() string { + return fmt.Sprintf("%s.yaml.gz", defaultConfigMapKey) +} + +func (cmw *gzipCMWriter) isEmpty() bool { + return cmw.actualBuff.Len() > 0 +} + +func (cmw *gzipCMWriter) exceedMaxLength(cmSize int, data string) (bool, error) { + _, err := cmw.helperWriter.Write([]byte(data)) + if err != nil { + return false, err + } + + err = cmw.helperWriter.Flush() + if err != nil { + return false, err + } + + return cmSize+cmw.helperBuff.Len() > maxGZIPLength, nil +} + +func (cmw *gzipCMWriter) closeCM(cm *corev1.ConfigMap) error { + err := cmw.actualWriter.Close() + if err != nil { + return err + } + + err = cmw.actualWriter.Flush() + if err != nil { + return err + } + + cm.BinaryData[defaultConfigMapKey] = make([]byte, cmw.actualBuff.Len()) + copy(cm.BinaryData[defaultConfigMapKey], cmw.actualBuff.Bytes()) + + cmw.reset() + + return nil +} + +func (cmw *gzipCMWriter) addData(data string) error { + dataBytes := []byte(data) + _, err := cmw.helperWriter.Write(dataBytes) + if err != nil { + return err + } + _, err = cmw.actualWriter.Write(dataBytes) + if err != nil { + return err + } + return nil +} + +// continueAddData completes adding the data after starting adding it in exceedMaxLength +func (cmw *gzipCMWriter) continueAddData(data string) error { + _, err := cmw.actualWriter.Write([]byte(data)) + if err != nil { + return err + } + return nil +} + +func (cmw *gzipCMWriter) writeLastFragment(cm *corev1.ConfigMap) error { + err := cmw.actualWriter.Close() + if err != nil { + return err + } + + cm.BinaryData[defaultConfigMapKey] = cmw.actualBuff.Bytes() + return nil +}