From f640de9021e9650ed03144b6ff06c20bafcd6cb8 Mon Sep 17 00:00:00 2001 From: Rewant Soni Date: Thu, 24 Oct 2024 20:17:04 +0530 Subject: [PATCH] controllers: new controller for maintenance mode Signed-off-by: Rewant Soni --- api/v1alpha1/storageclient_types.go | 6 + api/v1alpha1/zz_generated.deepcopy.go | 16 + ...client-operator.clusterserviceversion.yaml | 27 +- .../ocs.openshift.io_storageclients.yaml | 7 + cmd/main.go | 12 + .../ocs.openshift.io_storageclients.yaml | 7 + config/rbac/role.yaml | 25 + go.mod | 1 + go.sum | 4 +- .../controller/maintenancemode_controller.go | 197 +++++ .../controller/storageclaim_controller.go | 2 + .../controller/storageclient_controller.go | 21 +- .../api/v1alpha1/storageclient_types.go | 6 + .../api/v1alpha1/zz_generated.deepcopy.go | 16 + .../services/provider/api/v4/client/client.go | 16 + .../services/provider/api/v4/provider.pb.go | 758 +++++++++++------- .../provider/api/v4/provider_grpc.pb.go | 36 + vendor/modules.txt | 3 +- 18 files changed, 881 insertions(+), 279 deletions(-) create mode 100644 internal/controller/maintenancemode_controller.go diff --git a/api/v1alpha1/storageclient_types.go b/api/v1alpha1/storageclient_types.go index 6ca4d7c8..d4da3a02 100644 --- a/api/v1alpha1/storageclient_types.go +++ b/api/v1alpha1/storageclient_types.go @@ -46,10 +46,16 @@ type StorageClientSpec struct { OnboardingTicket string `json:"onboardingTicket"` } +type ProviderAttributes struct { + InMaintenanceMode bool `json:"inMaintenanceMode"` +} + // StorageClientStatus defines the observed state of StorageClient type StorageClientStatus struct { Phase storageClientPhase `json:"phase,omitempty"` + Provider ProviderAttributes `json:"providerAttributes,omitempty"` + // ConsumerID will hold the identity of this cluster inside the attached provider cluster ConsumerID string `json:"id,omitempty"` } diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 9c3bdede..ba580975 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -24,6 +24,21 @@ import ( "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProviderAttributes) DeepCopyInto(out *ProviderAttributes) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderAttributes. +func (in *ProviderAttributes) DeepCopy() *ProviderAttributes { + if in == nil { + return nil + } + out := new(ProviderAttributes) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageClaim) DeepCopyInto(out *StorageClaim) { *out = *in @@ -190,6 +205,7 @@ func (in *StorageClientSpec) DeepCopy() *StorageClientSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageClientStatus) DeepCopyInto(out *StorageClientStatus) { *out = *in + out.Provider = in.Provider } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClientStatus. diff --git a/bundle/manifests/ocs-client-operator.clusterserviceversion.yaml b/bundle/manifests/ocs-client-operator.clusterserviceversion.yaml index 00088b41..df98438e 100644 --- a/bundle/manifests/ocs-client-operator.clusterserviceversion.yaml +++ b/bundle/manifests/ocs-client-operator.clusterserviceversion.yaml @@ -7,7 +7,7 @@ metadata: categories: Storage console.openshift.io/plugins: '["odf-client-console"]' containerImage: quay.io/ocs-dev/ocs-client-operator:latest - createdAt: "2024-11-18T12:48:54Z" + createdAt: "2024-11-20T12:06:55Z" description: OpenShift Data Foundation client operator enables consumption of storage services from a remote centralized OpenShift Data Foundation provider cluster. @@ -326,6 +326,31 @@ spec: - list - update - watch + - apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes/finalizers + verbs: + - update + - apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes/status + verbs: + - get + - patch + - update - apiGroups: - security.openshift.io resources: diff --git a/bundle/manifests/ocs.openshift.io_storageclients.yaml b/bundle/manifests/ocs.openshift.io_storageclients.yaml index ef513ed9..c68bb554 100644 --- a/bundle/manifests/ocs.openshift.io_storageclients.yaml +++ b/bundle/manifests/ocs.openshift.io_storageclients.yaml @@ -67,6 +67,13 @@ spec: type: string phase: type: string + providerAttributes: + properties: + inMaintenanceMode: + type: boolean + required: + - inMaintenanceMode + type: object type: object type: object served: true diff --git a/cmd/main.go b/cmd/main.go index e348a777..0fc52ab9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -174,6 +174,7 @@ func main() { Client: mgr.GetClient(), Scheme: mgr.GetScheme(), OperatorNamespace: utils.GetOperatorNamespace(), + AvailableCrds: availCrds, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "StorageClient") os.Exit(1) @@ -208,6 +209,17 @@ func main() { os.Exit(1) } + if availCrds[controller.MaintenanceModeCRDName] { + if err = (&controller.MaintenanceModeReconciler{ + Client: mgr.GetClient(), + Scheme: mgr.GetScheme(), + OperatorNamespace: utils.GetOperatorNamespace(), + }).SetupWithManager(mgr); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "MaintenanceMode") + os.Exit(1) + } + } + setupLog.Info("starting manager") if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { setupLog.Error(err, "problem running manager") diff --git a/config/crd/bases/ocs.openshift.io_storageclients.yaml b/config/crd/bases/ocs.openshift.io_storageclients.yaml index 90b12081..ba3135a4 100644 --- a/config/crd/bases/ocs.openshift.io_storageclients.yaml +++ b/config/crd/bases/ocs.openshift.io_storageclients.yaml @@ -67,6 +67,13 @@ spec: type: string phase: type: string + providerAttributes: + properties: + inMaintenanceMode: + type: boolean + required: + - inMaintenanceMode + type: object type: object type: object served: true diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 0099a921..915ccdf9 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -283,6 +283,31 @@ rules: - list - update - watch +- apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes + verbs: + - create + - delete + - get + - list + - update + - watch +- apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes/finalizers + verbs: + - update +- apiGroups: + - ramendr.openshift.io + resources: + - maintenancemodes/status + verbs: + - get + - patch + - update - apiGroups: - security.openshift.io resources: diff --git a/go.mod b/go.mod index c301680a..0fdc85bc 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.22.5 replace ( github.com/portworx/sched-ops => github.com/portworx/sched-ops v0.20.4-openstorage-rc3 // required by Rook v1.12 github.com/red-hat-storage/ocs-client-operator/api => ./api + github.com/red-hat-storage/ocs-operator/services/provider/api/v4 => github.com/rewantsoni/ocs-operator/services/provider/api/v4 v4.0.0-20241120114354-2627b545ac9c vbom.ml/util => github.com/fvbommel/util v0.0.0-20180919145318-efcd4e0f9787 ) diff --git a/go.sum b/go.sum index dc8ec0c7..5f537506 100644 --- a/go.sum +++ b/go.sum @@ -325,8 +325,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/ramendr/ramen/api v0.0.0-20241001141243-29d6f22ad237 h1:ig6ePD0yopC5Qi5BRmhsIsKaOkdsGXTSmG3HTYIpquo= github.com/ramendr/ramen/api v0.0.0-20241001141243-29d6f22ad237/go.mod h1:nO6VM/+PEhcPGyFIQJdhY6ip822cA61PAy/s6IjenAA= -github.com/red-hat-storage/ocs-operator/services/provider/api/v4 v4.0.0-20241113175552-201c936738fd h1:WIdoP1CE/8yl9tnHFVY7g/h4ZDFk+2Y9Ri0PrHXfx1g= -github.com/red-hat-storage/ocs-operator/services/provider/api/v4 v4.0.0-20241113175552-201c936738fd/go.mod h1:t9GJk69TGXABBF8fFPB+ImpbA9mJyRS86wW6+Qn8xHo= +github.com/rewantsoni/ocs-operator/services/provider/api/v4 v4.0.0-20241120114354-2627b545ac9c h1:ee+WfAz8+RmoJZjepvN+mbPiMsz5lUuFFOdaLpNiY5w= +github.com/rewantsoni/ocs-operator/services/provider/api/v4 v4.0.0-20241120114354-2627b545ac9c/go.mod h1:t9GJk69TGXABBF8fFPB+ImpbA9mJyRS86wW6+Qn8xHo= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= diff --git a/internal/controller/maintenancemode_controller.go b/internal/controller/maintenancemode_controller.go new file mode 100644 index 00000000..57fa7744 --- /dev/null +++ b/internal/controller/maintenancemode_controller.go @@ -0,0 +1,197 @@ +package controller + +import ( + "context" + "fmt" + "time" + + "github.com/red-hat-storage/ocs-client-operator/api/v1alpha1" + + "github.com/go-logr/logr" + ramenv1alpha1 "github.com/ramendr/ramen/api/v1alpha1" + providerclient "github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client" + storagev1 "k8s.io/api/storage/v1" + kerrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/builder" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + "sigs.k8s.io/controller-runtime/pkg/handler" + "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" + "sigs.k8s.io/controller-runtime/pkg/reconcile" +) + +const ( + maintenanceModeFinalizer = "ocs-client-operator.ocs.openshift.io/maintenance-mode" + ramenReplicationIDLabel = "ramendr.openshift.io/replicationID" + MaintenanceModeCRDName = "maintenancemodes.ramendr.openshift.io" +) + +// MaintenanceModeReconciler reconciles a ClusterVersion object +type MaintenanceModeReconciler struct { + client.Client + OperatorNamespace string + Scheme *runtime.Scheme + + log logr.Logger + ctx context.Context + maintenanceMode *ramenv1alpha1.MaintenanceMode + storageClient *v1alpha1.StorageClient +} + +// SetupWithManager sets up the controller with the Manager. +func (r *MaintenanceModeReconciler) SetupWithManager(mgr ctrl.Manager) error { + generationChangePredicate := predicate.GenerationChangedPredicate{} + bldr := ctrl.NewControllerManagedBy(mgr). + For(&ramenv1alpha1.MaintenanceMode{}, builder.WithPredicates(generationChangePredicate)). + Watches(&storagev1.StorageClass{}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(generationChangePredicate)). + Watches(&v1alpha1.StorageClient{}, &handler.EnqueueRequestForObject{}, builder.WithPredicates(generationChangePredicate)) + + return bldr.Complete(r) +} + +//+kubebuilder:rbac:groups=ramendr.openshift.io,resources=maintenancemodes,verbs=get;list;update;create;watch;delete +//+kubebuilder:rbac:groups=ramendr.openshift.io,resources=maintenancemodes/status,verbs=get;update;patch +//+kubebuilder:rbac:groups=ramendr.openshift.io,resources=maintenancemodes/finalizers,verbs=update +//+kubebuilder:rbac:groups=ocs.openshift.io,resources=storageclients,verbs=get;list;watch +//+kubebuilder:rbac:groups=storage.k8s.io,resources=storageclasses,verbs=get;list;watch + +func (r *MaintenanceModeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + r.ctx = ctx + r.log = log.FromContext(ctx, "MaintenanceMode", req) + r.log.Info("Reconciling MaintenanceMode") + + r.maintenanceMode = &ramenv1alpha1.MaintenanceMode{} + r.maintenanceMode.Name = req.Name + if err := r.get(r.maintenanceMode); err != nil { + if kerrors.IsNotFound(err) { + r.log.Info("Maintenance Mode resource not found. Ignoring since object might be deleted.") + return reconcile.Result{}, nil + } + r.log.Error(err, "failed to get the Maintenance Mode") + return reconcile.Result{}, err + } + + // find the storageClass with the targetID + storageClassList := &storagev1.StorageClassList{} + err := r.list(storageClassList, client.MatchingLabels{ramenReplicationIDLabel: r.maintenanceMode.Spec.TargetID}) + if err != nil { + return ctrl.Result{}, err + } + if len(storageClassList.Items) != 1 { + return ctrl.Result{}, fmt.Errorf("failed to find storageClass for maintenance mode") + } + + storageClass := &storageClassList.Items[0] + + // find the storageClient with the targetID + r.storageClient = &v1alpha1.StorageClient{} + r.storageClient.Name = storageClass.GetLabels()[storageClientLabel] + err = r.get(r.storageClient) + if err != nil { + return ctrl.Result{}, fmt.Errorf("failed to get the storage client: %v", err) + } + + result, reconcileErr := r.reconcileStates() + + // Apply status changes to the StorageClient + statusErr := r.Client.Status().Update(ctx, r.storageClient) + if statusErr != nil { + r.log.Error(statusErr, "Failed to update MaintenanceMode status.") + } + if reconcileErr != nil { + err = reconcileErr + } else if statusErr != nil { + err = statusErr + } + return result, err +} + +func (r *MaintenanceModeReconciler) reconcileStates() (ctrl.Result, error) { + if r.maintenanceMode.GetDeletionTimestamp().IsZero() { + + //ensure finalizer + if controllerutil.AddFinalizer(r.maintenanceMode, maintenanceModeFinalizer) { + r.log.Info("finalizer missing on the Maintenance Mode resource, adding...") + if err := r.Client.Update(r.ctx, r.maintenanceMode); err != nil { + return ctrl.Result{}, err + } + } + + if !r.storageClient.Status.Provider.InMaintenanceMode { + providerClient, err := providerclient.NewProviderClient( + r.ctx, + r.storageClient.Spec.StorageProviderEndpoint, + 10*time.Second, + ) + if err != nil { + return reconcile.Result{}, fmt.Errorf( + "failed to create provider client with endpoint %v: %v", + r.storageClient.Spec.StorageProviderEndpoint, + err, + ) + } + // Close client-side connections. + defer providerClient.Close() + + _, err = providerClient.RequestMaintenanceMode(r.ctx, r.storageClient.Status.ConsumerID, true) + if err != nil { + return ctrl.Result{}, fmt.Errorf("failed to Request maintenance mode: %v", err) + } + r.maintenanceMode.Status.State = ramenv1alpha1.MModeStateUnknown + return ctrl.Result{Requeue: true}, nil + } + + r.maintenanceMode.Status.State = ramenv1alpha1.MModeStateCompleted + r.maintenanceMode.Status.ObservedGeneration = r.maintenanceMode.Generation + meta.SetStatusCondition(&r.maintenanceMode.Status.Conditions, + metav1.Condition{ + Type: string(ramenv1alpha1.MModeConditionFailoverActivated), + ObservedGeneration: r.maintenanceMode.Generation, + Reason: string(ramenv1alpha1.MModeStateCompleted), + Status: metav1.ConditionTrue, + }, + ) + } else { + // deletion phase + if r.storageClient.Status.Provider.InMaintenanceMode { + providerClient, err := providerclient.NewProviderClient( + r.ctx, + r.storageClient.Spec.StorageProviderEndpoint, + 10*time.Second, + ) + if err != nil { + return reconcile.Result{}, fmt.Errorf("failed to create provider client with endpoint %v: %v", r.storageClient.Spec.StorageProviderEndpoint, err) + } + // Close client-side connections. + defer providerClient.Close() + + _, err = providerClient.RequestMaintenanceMode(r.ctx, r.storageClient.Status.ConsumerID, false) + if err != nil { + return ctrl.Result{}, fmt.Errorf("failed to Request maintenance mode: %v", err) + } + return ctrl.Result{Requeue: true}, nil + } + + //remove finalizer + if controllerutil.RemoveFinalizer(r.maintenanceMode, maintenanceModeFinalizer) { + if err := r.Client.Update(r.ctx, r.maintenanceMode); err != nil { + return ctrl.Result{}, err + } + r.log.Info("finalizer removed successfully") + } + } + return ctrl.Result{}, nil +} + +func (r *MaintenanceModeReconciler) get(obj client.Object, opts ...client.GetOption) error { + return r.Get(r.ctx, client.ObjectKeyFromObject(obj), obj, opts...) +} + +func (r *MaintenanceModeReconciler) list(obj client.ObjectList, opts ...client.ListOption) error { + return r.List(r.ctx, obj, opts...) +} diff --git a/internal/controller/storageclaim_controller.go b/internal/controller/storageclaim_controller.go index fe52bf50..b516dcac 100644 --- a/internal/controller/storageclaim_controller.go +++ b/internal/controller/storageclaim_controller.go @@ -54,6 +54,7 @@ import ( const ( storageClaimFinalizer = "storageclaim.ocs.openshift.io" storageClaimAnnotation = "ocs.openshift.io/storageclaim" + storageClientLabel = "ocs.openshift.io/storageclient" keyRotationAnnotation = "keyrotation.csiaddons.openshift.io/schedule" pvClusterIDIndexName = "index:persistentVolumeClusterID" @@ -391,6 +392,7 @@ func (r *StorageClaimReconciler) reconcilePhases() (reconcile.Result, error) { } err = utils.CreateOrReplace(r.ctx, r.Client, storageClass, func() error { utils.AddLabels(storageClass, resource.Labels) + utils.AddLabel(storageClass, storageClientLabel, r.storageClient.Name) utils.AddAnnotation(storageClass, storageClaimAnnotation, r.storageClaim.Name) storageClass.Parameters = data return nil diff --git a/internal/controller/storageclient_controller.go b/internal/controller/storageclient_controller.go index 35754e99..416f7947 100644 --- a/internal/controller/storageclient_controller.go +++ b/internal/controller/storageclient_controller.go @@ -20,6 +20,7 @@ import ( "context" "encoding/json" "fmt" + extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "os" "strings" "time" @@ -72,12 +73,13 @@ const ( type StorageClientReconciler struct { ctx context.Context client.Client - Log klog.Logger - Scheme *runtime.Scheme + Log klog.Logger + Scheme *runtime.Scheme + AvailableCrds map[string]bool + OperatorNamespace string + recorder *utils.EventReporter storageClient *v1alpha1.StorageClient - - OperatorNamespace string } // SetupWithManager sets up the controller with the Manager. @@ -127,6 +129,15 @@ func (r *StorageClientReconciler) Reconcile(ctx context.Context, req ctrl.Reques r.Log = log.FromContext(ctx, "StorageClient", req) r.Log.Info("Reconciling StorageClient") + crd := &metav1.PartialObjectMetadata{} + crd.SetGroupVersionKind(extv1.SchemeGroupVersion.WithKind("CustomResourceDefinition")) + crd.Name = MaintenanceModeCRDName + if err := r.Client.Get(ctx, client.ObjectKeyFromObject(crd), crd); client.IgnoreNotFound(err) != nil { + r.Log.Error(err, "Failed to get CRD", "CRD", crd.Name) + return reconcile.Result{}, err + } + utils.AssertEqual(r.AvailableCrds[crd.Name], crd.UID != "", utils.ExitCodeThatShouldRestartTheProcess) + r.storageClient = &v1alpha1.StorageClient{} r.storageClient.Name = req.Name if err = r.get(r.storageClient); err != nil { @@ -207,6 +218,8 @@ func (r *StorageClientReconciler) reconcilePhases() (ctrl.Result, error) { return reconcile.Result{}, fmt.Errorf("failed to get StorageConfig: %v", err) } + r.storageClient.Status.Provider.InMaintenanceMode = storageClientResponse.SystemAttributes.SystemInMaintenanceMode + if res, err := r.reconcileClientStatusReporterJob(); err != nil { return res, err } diff --git a/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/storageclient_types.go b/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/storageclient_types.go index 6ca4d7c8..d4da3a02 100644 --- a/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/storageclient_types.go +++ b/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/storageclient_types.go @@ -46,10 +46,16 @@ type StorageClientSpec struct { OnboardingTicket string `json:"onboardingTicket"` } +type ProviderAttributes struct { + InMaintenanceMode bool `json:"inMaintenanceMode"` +} + // StorageClientStatus defines the observed state of StorageClient type StorageClientStatus struct { Phase storageClientPhase `json:"phase,omitempty"` + Provider ProviderAttributes `json:"providerAttributes,omitempty"` + // ConsumerID will hold the identity of this cluster inside the attached provider cluster ConsumerID string `json:"id,omitempty"` } diff --git a/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/zz_generated.deepcopy.go b/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/zz_generated.deepcopy.go index 9c3bdede..ba580975 100644 --- a/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/github.com/red-hat-storage/ocs-client-operator/api/v1alpha1/zz_generated.deepcopy.go @@ -24,6 +24,21 @@ import ( "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProviderAttributes) DeepCopyInto(out *ProviderAttributes) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderAttributes. +func (in *ProviderAttributes) DeepCopy() *ProviderAttributes { + if in == nil { + return nil + } + out := new(ProviderAttributes) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageClaim) DeepCopyInto(out *StorageClaim) { *out = *in @@ -190,6 +205,7 @@ func (in *StorageClientSpec) DeepCopy() *StorageClientSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StorageClientStatus) DeepCopyInto(out *StorageClientStatus) { *out = *in + out.Provider = in.Provider } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClientStatus. diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go index 490c97b0..56896492 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go @@ -227,3 +227,19 @@ func (cc *OCSProviderClient) PeerStorageCluster(ctx context.Context, onboardingT return cc.Client.PeerStorageCluster(apiCtx, req) } + +func (cc *OCSProviderClient) RequestMaintenanceMode(ctx context.Context, consumerUUID string, enable bool) (*pb.RequestMaintenanceModeResponse, error) { + if cc.Client == nil || cc.clientConn == nil { + return nil, fmt.Errorf("provider client is closed") + } + + req := &pb.RequestMaintenanceModeRequest{ + StorageConsumerUUID: consumerUUID, + Enable: enable, + } + + apiCtx, cancel := context.WithTimeout(ctx, cc.timeout) + defer cancel() + + return cc.Client.RequestMaintenanceMode(apiCtx, req) +} diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go index 261e53a2..4f718d11 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go @@ -65,7 +65,7 @@ func (x FulfillStorageClaimRequest_StorageType) Number() protoreflect.EnumNumber // Deprecated: Use FulfillStorageClaimRequest_StorageType.Descriptor instead. func (FulfillStorageClaimRequest_StorageType) EnumDescriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9, 0} + return file_provider_proto_rawDescGZIP(), []int{10, 0} } // OnboardConsumerRequest holds the required information to validate the consumer and create StorageConsumer @@ -319,6 +319,53 @@ func (x *ExternalResource) GetAnnotations() map[string]string { return nil } +type SystemAttributes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SystemInMaintenanceMode bool `protobuf:"varint,1,opt,name=SystemInMaintenanceMode,proto3" json:"SystemInMaintenanceMode,omitempty"` +} + +func (x *SystemAttributes) Reset() { + *x = SystemAttributes{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemAttributes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemAttributes) ProtoMessage() {} + +func (x *SystemAttributes) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SystemAttributes.ProtoReflect.Descriptor instead. +func (*SystemAttributes) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{4} +} + +func (x *SystemAttributes) GetSystemInMaintenanceMode() bool { + if x != nil { + return x.SystemInMaintenanceMode + } + return false +} + // StorageConfigResponse holds the response for the GetStorageConfig API request type StorageConfigResponse struct { state protoimpl.MessageState @@ -328,13 +375,14 @@ type StorageConfigResponse struct { // ExternalResource holds the configuration data of external storage cluster ExternalResource []*ExternalResource `protobuf:"bytes,1,rep,name=externalResource,proto3" json:"externalResource,omitempty"` // Contains hash of desired config - DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + SystemAttributes *SystemAttributes `protobuf:"bytes,3,opt,name=systemAttributes,proto3" json:"systemAttributes,omitempty"` } func (x *StorageConfigResponse) Reset() { *x = StorageConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -347,7 +395,7 @@ func (x *StorageConfigResponse) String() string { func (*StorageConfigResponse) ProtoMessage() {} func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -360,7 +408,7 @@ func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageConfigResponse.ProtoReflect.Descriptor instead. func (*StorageConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{4} + return file_provider_proto_rawDescGZIP(), []int{5} } func (x *StorageConfigResponse) GetExternalResource() []*ExternalResource { @@ -377,6 +425,13 @@ func (x *StorageConfigResponse) GetDesiredConfigHash() string { return "" } +func (x *StorageConfigResponse) GetSystemAttributes() *SystemAttributes { + if x != nil { + return x.SystemAttributes + } + return nil +} + // OffboardConsumerRequest holds the required information to delete the StorageConsumer CR on the storage provider cluster. type OffboardConsumerRequest struct { state protoimpl.MessageState @@ -390,7 +445,7 @@ type OffboardConsumerRequest struct { func (x *OffboardConsumerRequest) Reset() { *x = OffboardConsumerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +458,7 @@ func (x *OffboardConsumerRequest) String() string { func (*OffboardConsumerRequest) ProtoMessage() {} func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,7 +471,7 @@ func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerRequest.ProtoReflect.Descriptor instead. func (*OffboardConsumerRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{5} + return file_provider_proto_rawDescGZIP(), []int{6} } func (x *OffboardConsumerRequest) GetStorageConsumerUUID() string { @@ -436,7 +491,7 @@ type OffboardConsumerResponse struct { func (x *OffboardConsumerResponse) Reset() { *x = OffboardConsumerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -449,7 +504,7 @@ func (x *OffboardConsumerResponse) String() string { func (*OffboardConsumerResponse) ProtoMessage() {} func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -462,7 +517,7 @@ func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerResponse.ProtoReflect.Descriptor instead. func (*OffboardConsumerResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{6} + return file_provider_proto_rawDescGZIP(), []int{7} } // AcknowledgeOnboardingRequest holds the information required to acknowledge the onboarding @@ -478,7 +533,7 @@ type AcknowledgeOnboardingRequest struct { func (x *AcknowledgeOnboardingRequest) Reset() { *x = AcknowledgeOnboardingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +546,7 @@ func (x *AcknowledgeOnboardingRequest) String() string { func (*AcknowledgeOnboardingRequest) ProtoMessage() {} func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +559,7 @@ func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingRequest.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{7} + return file_provider_proto_rawDescGZIP(), []int{8} } func (x *AcknowledgeOnboardingRequest) GetStorageConsumerUUID() string { @@ -524,7 +579,7 @@ type AcknowledgeOnboardingResponse struct { func (x *AcknowledgeOnboardingResponse) Reset() { *x = AcknowledgeOnboardingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +592,7 @@ func (x *AcknowledgeOnboardingResponse) String() string { func (*AcknowledgeOnboardingResponse) ProtoMessage() {} func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +605,7 @@ func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingResponse.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{8} + return file_provider_proto_rawDescGZIP(), []int{9} } // FulfillStorageClaimRequest holds the information required to @@ -574,7 +629,7 @@ type FulfillStorageClaimRequest struct { func (x *FulfillStorageClaimRequest) Reset() { *x = FulfillStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -587,7 +642,7 @@ func (x *FulfillStorageClaimRequest) String() string { func (*FulfillStorageClaimRequest) ProtoMessage() {} func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -600,7 +655,7 @@ func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimRequest.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9} + return file_provider_proto_rawDescGZIP(), []int{10} } func (x *FulfillStorageClaimRequest) GetStorageClaimName() string { @@ -648,7 +703,7 @@ type FulfillStorageClaimResponse struct { func (x *FulfillStorageClaimResponse) Reset() { *x = FulfillStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -661,7 +716,7 @@ func (x *FulfillStorageClaimResponse) String() string { func (*FulfillStorageClaimResponse) ProtoMessage() {} func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -674,7 +729,7 @@ func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimResponse.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{10} + return file_provider_proto_rawDescGZIP(), []int{11} } // RevokeStorageClaimRequest holds the information required to delete the @@ -693,7 +748,7 @@ type RevokeStorageClaimRequest struct { func (x *RevokeStorageClaimRequest) Reset() { *x = RevokeStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -706,7 +761,7 @@ func (x *RevokeStorageClaimRequest) String() string { func (*RevokeStorageClaimRequest) ProtoMessage() {} func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -719,7 +774,7 @@ func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimRequest.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{11} + return file_provider_proto_rawDescGZIP(), []int{12} } func (x *RevokeStorageClaimRequest) GetStorageClaimName() string { @@ -746,7 +801,7 @@ type RevokeStorageClaimResponse struct { func (x *RevokeStorageClaimResponse) Reset() { *x = RevokeStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +814,7 @@ func (x *RevokeStorageClaimResponse) String() string { func (*RevokeStorageClaimResponse) ProtoMessage() {} func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +827,7 @@ func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimResponse.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{12} + return file_provider_proto_rawDescGZIP(), []int{13} } // StorageClaimConfigRequest holds the information required to generate the @@ -791,7 +846,7 @@ type StorageClaimConfigRequest struct { func (x *StorageClaimConfigRequest) Reset() { *x = StorageClaimConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -804,7 +859,7 @@ func (x *StorageClaimConfigRequest) String() string { func (*StorageClaimConfigRequest) ProtoMessage() {} func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -817,7 +872,7 @@ func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigRequest.ProtoReflect.Descriptor instead. func (*StorageClaimConfigRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{13} + return file_provider_proto_rawDescGZIP(), []int{14} } func (x *StorageClaimConfigRequest) GetStorageClaimName() string { @@ -847,7 +902,7 @@ type StorageClaimConfigResponse struct { func (x *StorageClaimConfigResponse) Reset() { *x = StorageClaimConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -860,7 +915,7 @@ func (x *StorageClaimConfigResponse) String() string { func (*StorageClaimConfigResponse) ProtoMessage() {} func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -873,7 +928,7 @@ func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigResponse.ProtoReflect.Descriptor instead. func (*StorageClaimConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{14} + return file_provider_proto_rawDescGZIP(), []int{15} } func (x *StorageClaimConfigResponse) GetExternalResource() []*ExternalResource { @@ -906,7 +961,7 @@ type ReportStatusRequest struct { func (x *ReportStatusRequest) Reset() { *x = ReportStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +974,7 @@ func (x *ReportStatusRequest) String() string { func (*ReportStatusRequest) ProtoMessage() {} func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +987,7 @@ func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusRequest.ProtoReflect.Descriptor instead. func (*ReportStatusRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{15} + return file_provider_proto_rawDescGZIP(), []int{16} } func (x *ReportStatusRequest) GetStorageConsumerUUID() string { @@ -1004,7 +1059,7 @@ type ReportStatusResponse struct { func (x *ReportStatusResponse) Reset() { *x = ReportStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1017,7 +1072,7 @@ func (x *ReportStatusResponse) String() string { func (*ReportStatusResponse) ProtoMessage() {} func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1030,7 +1085,7 @@ func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusResponse.ProtoReflect.Descriptor instead. func (*ReportStatusResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{16} + return file_provider_proto_rawDescGZIP(), []int{17} } func (x *ReportStatusResponse) GetDesiredClientOperatorChannel() string { @@ -1062,7 +1117,7 @@ type PeerStorageClusterRequest struct { func (x *PeerStorageClusterRequest) Reset() { *x = PeerStorageClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1075,7 +1130,7 @@ func (x *PeerStorageClusterRequest) String() string { func (*PeerStorageClusterRequest) ProtoMessage() {} func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,7 +1143,7 @@ func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterRequest.ProtoReflect.Descriptor instead. func (*PeerStorageClusterRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{17} + return file_provider_proto_rawDescGZIP(), []int{18} } func (x *PeerStorageClusterRequest) GetOnboardingToken() string { @@ -1115,7 +1170,7 @@ type PeerStorageClusterResponse struct { func (x *PeerStorageClusterResponse) Reset() { *x = PeerStorageClusterResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1128,7 +1183,7 @@ func (x *PeerStorageClusterResponse) String() string { func (*PeerStorageClusterResponse) ProtoMessage() {} func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1141,7 +1196,101 @@ func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterResponse.ProtoReflect.Descriptor instead. func (*PeerStorageClusterResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{18} + return file_provider_proto_rawDescGZIP(), []int{19} +} + +type RequestMaintenanceModeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // K8s UID (UUID) of the consumer cluster. + StorageConsumerUUID string `protobuf:"bytes,1,opt,name=storageConsumerUUID,proto3" json:"storageConsumerUUID,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` +} + +func (x *RequestMaintenanceModeRequest) Reset() { + *x = RequestMaintenanceModeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeRequest) ProtoMessage() {} + +func (x *RequestMaintenanceModeRequest) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestMaintenanceModeRequest.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeRequest) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{20} +} + +func (x *RequestMaintenanceModeRequest) GetStorageConsumerUUID() string { + if x != nil { + return x.StorageConsumerUUID + } + return "" +} + +func (x *RequestMaintenanceModeRequest) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +type RequestMaintenanceModeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RequestMaintenanceModeResponse) Reset() { + *x = RequestMaintenanceModeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeResponse) ProtoMessage() {} + +func (x *RequestMaintenanceModeResponse) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestMaintenanceModeResponse.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeResponse) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{21} } var File_provider_proto protoreflect.FileDescriptor @@ -1192,173 +1341,198 @@ var file_provider_proto_rawDesc = []byte{ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x8d, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, - 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, - 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, - 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, - 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, - 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, - 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, - 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, + 0x4c, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, 0x61, + 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xd5, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, + 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, - 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, - 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xea, 0x06, 0x0a, 0x0b, 0x4f, 0x43, 0x53, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, 0x66, 0x66, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, + 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, + 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, + 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, + 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, + 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, + 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, + 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, + 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, + 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, + 0x1d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd9, 0x07, 0x0a, 0x0b, 0x4f, + 0x43, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, - 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, + 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, + 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, + 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, + 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1374,60 +1548,66 @@ func file_provider_proto_rawDescGZIP() []byte { } var file_provider_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_provider_proto_goTypes = []interface{}{ (FulfillStorageClaimRequest_StorageType)(0), // 0: provider.FulfillStorageClaimRequest.StorageType (*OnboardConsumerRequest)(nil), // 1: provider.OnboardConsumerRequest (*OnboardConsumerResponse)(nil), // 2: provider.OnboardConsumerResponse (*StorageConfigRequest)(nil), // 3: provider.StorageConfigRequest (*ExternalResource)(nil), // 4: provider.ExternalResource - (*StorageConfigResponse)(nil), // 5: provider.StorageConfigResponse - (*OffboardConsumerRequest)(nil), // 6: provider.OffboardConsumerRequest - (*OffboardConsumerResponse)(nil), // 7: provider.OffboardConsumerResponse - (*AcknowledgeOnboardingRequest)(nil), // 8: provider.AcknowledgeOnboardingRequest - (*AcknowledgeOnboardingResponse)(nil), // 9: provider.AcknowledgeOnboardingResponse - (*FulfillStorageClaimRequest)(nil), // 10: provider.FulfillStorageClaimRequest - (*FulfillStorageClaimResponse)(nil), // 11: provider.FulfillStorageClaimResponse - (*RevokeStorageClaimRequest)(nil), // 12: provider.RevokeStorageClaimRequest - (*RevokeStorageClaimResponse)(nil), // 13: provider.RevokeStorageClaimResponse - (*StorageClaimConfigRequest)(nil), // 14: provider.StorageClaimConfigRequest - (*StorageClaimConfigResponse)(nil), // 15: provider.StorageClaimConfigResponse - (*ReportStatusRequest)(nil), // 16: provider.ReportStatusRequest - (*ReportStatusResponse)(nil), // 17: provider.ReportStatusResponse - (*PeerStorageClusterRequest)(nil), // 18: provider.PeerStorageClusterRequest - (*PeerStorageClusterResponse)(nil), // 19: provider.PeerStorageClusterResponse - nil, // 20: provider.ExternalResource.LabelsEntry - nil, // 21: provider.ExternalResource.AnnotationsEntry + (*SystemAttributes)(nil), // 5: provider.SystemAttributes + (*StorageConfigResponse)(nil), // 6: provider.StorageConfigResponse + (*OffboardConsumerRequest)(nil), // 7: provider.OffboardConsumerRequest + (*OffboardConsumerResponse)(nil), // 8: provider.OffboardConsumerResponse + (*AcknowledgeOnboardingRequest)(nil), // 9: provider.AcknowledgeOnboardingRequest + (*AcknowledgeOnboardingResponse)(nil), // 10: provider.AcknowledgeOnboardingResponse + (*FulfillStorageClaimRequest)(nil), // 11: provider.FulfillStorageClaimRequest + (*FulfillStorageClaimResponse)(nil), // 12: provider.FulfillStorageClaimResponse + (*RevokeStorageClaimRequest)(nil), // 13: provider.RevokeStorageClaimRequest + (*RevokeStorageClaimResponse)(nil), // 14: provider.RevokeStorageClaimResponse + (*StorageClaimConfigRequest)(nil), // 15: provider.StorageClaimConfigRequest + (*StorageClaimConfigResponse)(nil), // 16: provider.StorageClaimConfigResponse + (*ReportStatusRequest)(nil), // 17: provider.ReportStatusRequest + (*ReportStatusResponse)(nil), // 18: provider.ReportStatusResponse + (*PeerStorageClusterRequest)(nil), // 19: provider.PeerStorageClusterRequest + (*PeerStorageClusterResponse)(nil), // 20: provider.PeerStorageClusterResponse + (*RequestMaintenanceModeRequest)(nil), // 21: provider.RequestMaintenanceModeRequest + (*RequestMaintenanceModeResponse)(nil), // 22: provider.RequestMaintenanceModeResponse + nil, // 23: provider.ExternalResource.LabelsEntry + nil, // 24: provider.ExternalResource.AnnotationsEntry } var file_provider_proto_depIdxs = []int32{ - 20, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry - 21, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry + 23, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry + 24, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry 4, // 2: provider.StorageConfigResponse.externalResource:type_name -> provider.ExternalResource - 0, // 3: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType - 4, // 4: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource - 1, // 5: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest - 3, // 6: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest - 6, // 7: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest - 8, // 8: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest - 10, // 9: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest - 12, // 10: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest - 14, // 11: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest - 16, // 12: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest - 18, // 13: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest - 2, // 14: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse - 5, // 15: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse - 7, // 16: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse - 9, // 17: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse - 11, // 18: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse - 13, // 19: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse - 15, // 20: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse - 17, // 21: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse - 19, // 22: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse - 14, // [14:23] is the sub-list for method output_type - 5, // [5:14] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 5, // 3: provider.StorageConfigResponse.systemAttributes:type_name -> provider.SystemAttributes + 0, // 4: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType + 4, // 5: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource + 1, // 6: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest + 3, // 7: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest + 7, // 8: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest + 9, // 9: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest + 11, // 10: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest + 13, // 11: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest + 15, // 12: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest + 17, // 13: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest + 19, // 14: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest + 21, // 15: provider.OCSProvider.RequestMaintenanceMode:input_type -> provider.RequestMaintenanceModeRequest + 2, // 16: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse + 6, // 17: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse + 8, // 18: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse + 10, // 19: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse + 12, // 20: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse + 14, // 21: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse + 16, // 22: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse + 18, // 23: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse + 20, // 24: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse + 22, // 25: provider.OCSProvider.RequestMaintenanceMode:output_type -> provider.RequestMaintenanceModeResponse + 16, // [16:26] is the sub-list for method output_type + 6, // [6:16] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_provider_proto_init() } @@ -1485,7 +1665,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageConfigResponse); i { + switch v := v.(*SystemAttributes); i { case 0: return &v.state case 1: @@ -1497,7 +1677,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerRequest); i { + switch v := v.(*StorageConfigResponse); i { case 0: return &v.state case 1: @@ -1509,7 +1689,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerResponse); i { + switch v := v.(*OffboardConsumerRequest); i { case 0: return &v.state case 1: @@ -1521,7 +1701,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingRequest); i { + switch v := v.(*OffboardConsumerResponse); i { case 0: return &v.state case 1: @@ -1533,7 +1713,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingResponse); i { + switch v := v.(*AcknowledgeOnboardingRequest); i { case 0: return &v.state case 1: @@ -1545,7 +1725,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimRequest); i { + switch v := v.(*AcknowledgeOnboardingResponse); i { case 0: return &v.state case 1: @@ -1557,7 +1737,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimResponse); i { + switch v := v.(*FulfillStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1569,7 +1749,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimRequest); i { + switch v := v.(*FulfillStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1581,7 +1761,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimResponse); i { + switch v := v.(*RevokeStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1593,7 +1773,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigRequest); i { + switch v := v.(*RevokeStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1605,7 +1785,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigResponse); i { + switch v := v.(*StorageClaimConfigRequest); i { case 0: return &v.state case 1: @@ -1617,7 +1797,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusRequest); i { + switch v := v.(*StorageClaimConfigResponse); i { case 0: return &v.state case 1: @@ -1629,7 +1809,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusResponse); i { + switch v := v.(*ReportStatusRequest); i { case 0: return &v.state case 1: @@ -1641,7 +1821,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerStorageClusterRequest); i { + switch v := v.(*ReportStatusResponse); i { case 0: return &v.state case 1: @@ -1653,6 +1833,18 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PeerStorageClusterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerStorageClusterResponse); i { case 0: return &v.state @@ -1664,6 +1856,30 @@ func file_provider_proto_init() { return nil } } + file_provider_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1671,7 +1887,7 @@ func file_provider_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_provider_proto_rawDesc, NumEnums: 1, - NumMessages: 21, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go index 6a7c6596..969a638a 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go @@ -39,6 +39,7 @@ type OCSProviderClient interface { ReportStatus(ctx context.Context, in *ReportStatusRequest, opts ...grpc.CallOption) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(ctx context.Context, in *PeerStorageClusterRequest, opts ...grpc.CallOption) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) } type oCSProviderClient struct { @@ -130,6 +131,15 @@ func (c *oCSProviderClient) PeerStorageCluster(ctx context.Context, in *PeerStor return out, nil } +func (c *oCSProviderClient) RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) { + out := new(RequestMaintenanceModeResponse) + err := c.cc.Invoke(ctx, "/provider.OCSProvider/RequestMaintenanceMode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OCSProviderServer is the server API for OCSProvider service. // All implementations must embed UnimplementedOCSProviderServer // for forward compatibility @@ -155,6 +165,7 @@ type OCSProviderServer interface { ReportStatus(context.Context, *ReportStatusRequest) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) mustEmbedUnimplementedOCSProviderServer() } @@ -189,6 +200,9 @@ func (UnimplementedOCSProviderServer) ReportStatus(context.Context, *ReportStatu func (UnimplementedOCSProviderServer) PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PeerStorageCluster not implemented") } +func (UnimplementedOCSProviderServer) RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RequestMaintenanceMode not implemented") +} func (UnimplementedOCSProviderServer) mustEmbedUnimplementedOCSProviderServer() {} // UnsafeOCSProviderServer may be embedded to opt out of forward compatibility for this service. @@ -364,6 +378,24 @@ func _OCSProvider_PeerStorageCluster_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _OCSProvider_RequestMaintenanceMode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestMaintenanceModeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/provider.OCSProvider/RequestMaintenanceMode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, req.(*RequestMaintenanceModeRequest)) + } + return interceptor(ctx, in, info, handler) +} + // OCSProvider_ServiceDesc is the grpc.ServiceDesc for OCSProvider service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -407,6 +439,10 @@ var OCSProvider_ServiceDesc = grpc.ServiceDesc{ MethodName: "PeerStorageCluster", Handler: _OCSProvider_PeerStorageCluster_Handler, }, + { + MethodName: "RequestMaintenanceMode", + Handler: _OCSProvider_RequestMaintenanceMode_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "provider.proto", diff --git a/vendor/modules.txt b/vendor/modules.txt index 58f75341..18c90346 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -216,7 +216,7 @@ github.com/ramendr/ramen/api/v1alpha1 # github.com/red-hat-storage/ocs-client-operator/api v0.0.0-00010101000000-000000000000 => ./api ## explicit; go 1.22.5 github.com/red-hat-storage/ocs-client-operator/api/v1alpha1 -# github.com/red-hat-storage/ocs-operator/services/provider/api/v4 v4.0.0-20241113175552-201c936738fd +# github.com/red-hat-storage/ocs-operator/services/provider/api/v4 v4.0.0-20241113175552-201c936738fd => github.com/rewantsoni/ocs-operator/services/provider/api/v4 v4.0.0-20241120114354-2627b545ac9c ## explicit; go 1.22.5 github.com/red-hat-storage/ocs-operator/services/provider/api/v4 github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client @@ -925,4 +925,5 @@ sigs.k8s.io/yaml sigs.k8s.io/yaml/goyaml.v2 # github.com/portworx/sched-ops => github.com/portworx/sched-ops v0.20.4-openstorage-rc3 # github.com/red-hat-storage/ocs-client-operator/api => ./api +# github.com/red-hat-storage/ocs-operator/services/provider/api/v4 => github.com/rewantsoni/ocs-operator/services/provider/api/v4 v4.0.0-20241120114354-2627b545ac9c # vbom.ml/util => github.com/fvbommel/util v0.0.0-20180919145318-efcd4e0f9787